すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB RDS:ApsaraDB RDSとOSSを使用してさまざまな構造にデータを保存する

最終更新日:Jan 22, 2024

このトピックでは、ApsaraDB RDSをObject Storage Service (OSS) とともに使用して、さまざまな構造にデータを格納する方法について説明します。

OSSは、大量のデータを保存するためにAlibaba cloudが提供する、安全で費用対効果の高い信頼性の高いクラウドストレージサービスです。 たとえば、アプリケーションがフォーラムソフトウェアの場合、ユーザープロフィール写真やフォーラム投稿などのリソースをOSSバケットに保存できます。 これにより、RDSインスタンスに保存する必要があるデータの量を減らすことができます。

サンプルコード

サンプルコードはPython 3.6に基づいて記述されています。

OSS SDK For Pythonのインストール方法の詳細については、「インストール」をご参照ください。

  1. oss2.Bucketを初期化します。
    # ! /usr/bin/env python
    oss2のインポート
    
    # Alibaba Cloudアカウントには、すべてのAPI操作を呼び出す権限があります。 Alibaba CloudアカウントのAccessKeyペアが漏洩した場合、データは高いセキュリティリスクにさらされる可能性があります。 API操作の呼び出しやルーチンのO&Mの実行には、Resource Access Management (RAM) ユーザーを使用することを推奨します。RAMユーザーを作成するには、RAMコンソールにログインします。 
    auth = oss2.Auth('yourAccessKeyId', 'yourAccessKeySecret')
    
    # バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、yourEndpointパラメーターをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 
    endpoint = 'yourEndpoint'
    
    # バケットの名前を指定します。 
    bucket = oss2.Bucket(auth, endpoint, 'examplebucket')
    
  2. オブジェクトのアップロード
    # ローカルファイルとオブジェクトのフルパスを指定します。 オブジェクトのフルパスにバケット名を含めることはできません。 
    # デフォルトでは、ローカルファイルのフルパスを指定しない場合、サンプルプログラムが属するプロジェクトのパスからローカルファイルがアップロードされます。 
    # info_old.txtオブジェクトをアップロードします。
    res1 = bucket.put_object_from_file("info_key.txt", "info_old.txt")
    プリント ("res1-{0}".format(res1.status))
        
    # picture_old.pngオブジェクトをアップロードします。
    res2 = bucket.put_object_from_file("picture_key.png", "picture_old.png")
    プリント ("res3-{0}".format(res2.status)) 
  3. オブジェクトを取得します。
    # オブジェクトのフルパスを指定します。 info_key.txtなどのバケット名をフルパスに含めることはできません。 
    # オブジェクトをダウンロードし、指定したパス (D :\\ info_new.txtなど) のファイルとして保存します。 同じ名前のファイルが既に存在する場合、ダウンロードされたオブジェクトはファイルを上書きします。 同じ名前のファイルが存在しない場合は, ファイルが作成されます。 
    res3 = bucket.get_object_to_file("info_key.txt", "D :\\ info_new.txt")
    プリント ("res2-{0}".format(res3.status))
    
    res4 = bucket.get_object_to_file("picture_key.png", "D :\\ picture_new.png")
    プリント ("res4-{0}".format(res4.status)) 

Elastic Compute Service (ECS) アプリケーションコードは、ユーザーIDがRDSインスタンスに保存され、ユーザープロファイル写真がOSSバケットに保存されることを指定します。 次の例は、Pythonコードスニペットを示しています。

# ! /usr/bin/env python
oss2のインポート
mysql_clientのインポート

def conn_client():
    auth = oss2.Auth('LTAI5tLNak1sYu8g9UT ***** ', 'Lyn9YLbmfQYQBgdNJAupawSHT *****')
    endpoint = "oss-cn-hangzhou.aliyuncs.com"
    bucket = oss2.Bucket(auth、endpoint、'oss-wwjtest')

    user_id = mysql_client.fetch_one(sql)# RDSインスタンス内のユーザーのIDを検索します。
    # 指定されたパスにユーザーのプロフィール写真を取得してダウンロードします。
    bucket.get_object_to_file (オブジェクト、your_path/user_id + '.png ')
    # アップロードされたユーザーのプロフィール写真を処理します。
    bucket.put_object_from_file (オブジェクト、your_path/user_id + '.png ')

if __name__ ='__main__':
    conn_client()