OSS 是阿里云对外提供的海量、安全、低成本、高可靠的云存储服务。RDS 可以和 OSS 搭配使用,组成多类型数据存储解决方案。
例如,当业务应用为论坛时,RDS 搭配 OSS 使用,注册用户的图像、帖子内容的图像等资源可以存储在 OSS 中,以减少 RDS 的存储压力。
代码示例
OSS 与 RDS 搭配使用示例。
初始化 OssApi。[backcolor=transparent] [backcolor=transparent]from[backcolor=transparent] oss[backcolor=transparent].[backcolor=transparent]oss_api [backcolor=transparent]import[backcolor=transparent] [backcolor=transparent]*- [backcolor=transparent] endpoint[backcolor=transparent]=”[backcolor=transparent]oss[backcolor=transparent]-[backcolor=transparent]cn[backcolor=transparent]-[backcolor=transparent]hangzhou[backcolor=transparent].[backcolor=transparent]aliyuncs[backcolor=transparent].[backcolor=transparent]com[backcolor=transparent]”[backcolor=transparent]
- [backcolor=transparent] accessKeyId[backcolor=transparent],[backcolor=transparent] accessKeySecret[backcolor=transparent]=”[backcolor=transparent]your id[backcolor=transparent]”,”[backcolor=transparent]your secret[backcolor=transparent]”
- [backcolor=transparent] oss [backcolor=transparent]=[backcolor=transparent] [backcolor=transparent]OssAPI[backcolor=transparent]([backcolor=transparent]endpoint[backcolor=transparent],[backcolor=transparent] accessKeyId[backcolor=transparent],[backcolor=transparent] accessKeySecret[backcolor=transparent])
新建 Bucket。
- [backcolor=transparent] [backcolor=transparent]#设置bucket权限为私有
- [backcolor=transparent] res [backcolor=transparent]=[backcolor=transparent] oss[backcolor=transparent].[backcolor=transparent]create_bucket[backcolor=transparent]([backcolor=transparent]bucket[backcolor=transparent],[backcolor=transparent]"private"[backcolor=transparent])
- [backcolor=transparent] [backcolor=transparent]print[backcolor=transparent] [backcolor=transparent]"%s\n%s"[backcolor=transparent] [backcolor=transparent]%[backcolor=transparent] [backcolor=transparent]([backcolor=transparent]res[backcolor=transparent].[backcolor=transparent]status[backcolor=transparent],[backcolor=transparent] res[backcolor=transparent].[backcolor=transparent]read[backcolor=transparent]())
上传 Object。
- [backcolor=transparent] res [backcolor=transparent]=[backcolor=transparent] oss[backcolor=transparent].[backcolor=transparent]put_object_from_file[backcolor=transparent]([backcolor=transparent]bucket[backcolor=transparent],[backcolor=transparent] [backcolor=transparent]object[backcolor=transparent],[backcolor=transparent] [backcolor=transparent]"test.txt"[backcolor=transparent])
- [backcolor=transparent] [backcolor=transparent]print[backcolor=transparent] [backcolor=transparent]"%s\n%s"[backcolor=transparent] [backcolor=transparent]%[backcolor=transparent] [backcolor=transparent]([backcolor=transparent]res[backcolor=transparent].[backcolor=transparent]status[backcolor=transparent],[backcolor=transparent] res[backcolor=transparent].[backcolor=transparent]getheaders[backcolor=transparent]())
获取对应 Object。
- [backcolor=transparent] res [backcolor=transparent]=[backcolor=transparent] oss[backcolor=transparent].[backcolor=transparent]get_object_to_file[backcolor=transparent]([backcolor=transparent]bucket[backcolor=transparent],[backcolor=transparent] [backcolor=transparent]object[backcolor=transparent],[backcolor=transparent] [backcolor=transparent]"/filepath/test.txt"[backcolor=transparent])
- [backcolor=transparent] [backcolor=transparent]print[backcolor=transparent] [backcolor=transparent]"%s\n%s"[backcolor=transparent] [backcolor=transparent]%[backcolor=transparent] [backcolor=transparent]([backcolor=transparent]res[backcolor=transparent].[backcolor=transparent]status[backcolor=transparent],[backcolor=transparent] res[backcolor=transparent].[backcolor=transparent]getheaders[backcolor=transparent]())
ECS 应用代码中,RDS 中存储了每个用户的 id,而用户对应的头像资源存储于 OSS 中,以简单的 python 代码为例:
- [backcolor=transparent]```
- [backcolor=transparent]#!/usr/bin/env python
- [backcolor=transparent]from oss.oss_api import *
- [backcolor=transparent]endpoint=”oss-cn-hangzhou.aliyuncs.com”
- [backcolor=transparent]accessKeyId, accessKeySecret=”your id”,”your secret”
- [backcolor=transparent]oss = OssAPI(endpoint, accessKeyId, accessKeySecret)
- [backcolor=transparent]user_id = mysql_client.fetch_one(sql)#从RDS中查找用户的user_id
- [backcolor=transparent]#获取用户头像并下载到对应路径
- [backcolor=transparent]oss.get_object_to_file(bucket, object, your_path/user_id+’.png’)
- [backcolor=transparent]#处理用户上传头像
- [backcolor=transparent]oss.put_object_from_file(bucket, object, your_path/user_id+’.png’)
- [backcolor=transparent]```