RDS可以和OSS搭配使用,組成多類型資料存放區解決方案。
OSS是阿里雲對外提供的海量、安全、低成本、高可靠的雲端儲存體服務。RDS可以和OSS搭配使用,例如當業務應用為論壇時,RDS搭配OSS使用,註冊使用者的映像、文章內容的映像等資源可以儲存在OSS中,以減少RDS的儲存壓力。
程式碼範例
OSS與RDS搭配使用樣本,基於Python 3.6編寫。
OSS Python SDK安裝指導,請參見安裝。
初始化oss2.Bucket類。
# !/usr/bin/env python import oss2 # 阿里雲帳號AccessKey擁有所有API的存取權限,風險很高。建議您建立並使用RAM使用者進行API訪問或日常營運,請登入RAM控制台建立RAM使用者。 auth = oss2.Auth('yourAccessKeyId', 'yourAccessKeySecret') # yourEndpoint填寫Bucket所在地區對應的Endpoint。以華東1(杭州)為例,Endpoint填寫為https://oss-cn-hangzhou.aliyuncs.com。 endpoint = 'yourEndpoint' # 填寫Bucket名稱。 bucket = oss2.Bucket(auth, endpoint, 'examplebucket')
上傳Object。
# 填寫Object完整路徑和本地檔案的完整路徑。Object完整路徑中不能包含Bucket名稱。 # 如果未指定本地路徑,則預設從樣本程式所屬專案對應本地路徑中上傳檔案。 # 上傳info_old.txt檔案對象 res1 = bucket.put_object_from_file("info_key.txt", "info_old.txt") print("res1-{0}".format(res1.status)) # 上傳picture_old.png圖片對象 res2 = bucket.put_object_from_file("picture_key.png", "picture_old.png") print("res3-{0}".format(res2.status))
擷取對應Object。
# 填寫Object完整路徑,完整路徑中不包含Bucket名稱,例如info_key.txt。 # 下載Object到本地檔案,並儲存到指定的本地路徑D:\\info_new.txt。如果指定的本地檔案存在,則會覆蓋該檔案,不存在則建立檔案。 res3 = bucket.get_object_to_file("info_key.txt", "D:\\info_new.txt") print("res2-{0}".format(res3.status)) res4 = bucket.get_object_to_file("picture_key.png", "D:\\picture_new.png") print("res4-{0}".format(res4.status))
ECS應用代碼中,RDS中儲存了每個使用者的id,而使用者對應的頭像資源儲存於OSS中,以簡單的Python代碼為例:
# !/usr/bin/env python
import oss2
import mysql_client
def conn_client():
auth = oss2.Auth('*****', '*****')
endpoint = "oss-cn-hangzhou.aliyuncs.com"
bucket = oss2.Bucket(auth, endpoint, 'oss-wwjtest')
user_id = mysql_client.fetch_one(sql) # 從RDS中尋找使用者的user_id
# 擷取帳戶圖片並下載到對應路徑
bucket.get_object_to_file(object, your_path/user_id + '.png')
# 處理使用者上傳頭像
bucket.put_object_from_file(object, your_path/user_id + '.png')
if __name__ == '__main__':
conn_client()