このトピックでは、Python用のObject Storage Service (OSS) SDKを初期化する方法について説明します。
前提条件
アクセス資格情報が設定されます。 詳細については、「アクセス資格情報の設定」をご参照ください。
背景情報
OSS SDK for Pythonのほとんどの操作は、oss2.Serviceクラスとoss2.Bucketクラスに基づいて実行されます。
oss2.Serviceクラスは、バケットの一覧表示に使用されます。
oss2.Bucketクラスは、オブジェクトのアップロード、ダウンロード、削除、およびバケットの設定に使用されます。
oss2.Serviceクラスとoss2.Bucketクラスを初期化するときは、バケットが配置されているリージョンのエンドポイントを指定する必要があります。 oss2.Serviceクラスは、バケットにマップされたカスタムドメイン名を使用したバケットへのアクセスをサポートしていません。 エンドポイントの詳細については、「リージョンとエンドポイント」および「カスタムドメイン名のマッピング」をご参照ください。
oss2.Serviceクラスの初期化
詳細については、「バケットのリスト」をご参照ください。
oss2.Bucketクラスの初期化
V1署名アルゴリズムの使用
バケットが配置されているリージョンのエンドポイントを使用してoss2.Bucketクラスを初期化する
次のサンプルコードは、バケットが配置されているリージョンのエンドポイントを使用してoss2.Bucketクラスを初期化する方法の例を示しています。さまざまなリージョンのOSSエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。
# -*-コーディング: utf-8 -*-
oss2のインポート
oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート
# 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、環境変数が設定されていることを確認してください。
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。
endpoint = 'yourEndpoint'
# バケットの名前を指定します。
bucket = oss2.Bucket(auth、endpoint、'examplebucket')
バケットにマップされたカスタムドメイン名を使用してoss2.Bucketクラスを初期化
次のサンプルコードでは、バケットにマップされたカスタムドメイン名を使用してoss2.Bucketクラスを初期化する方法の例を示します。詳細については、「カスタムドメイン名をバケットのデフォルトドメイン名にマップする」をご参照ください。
# -*-コーディング: utf-8 -*-
oss2のインポート
oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート
# 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、環境変数が設定されていることを確認してください。
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# バケットにマップされるカスタムドメイン名を指定します。 (例:example.com)。
cname = 'http:// example.com'
# バケットの名前を指定し、is_cnameをTrueに設定してCNAMEを有効にします。 CNAMEは、カスタムドメイン名をバケットにマップするために使用されます。
bucket = oss2.Bucket(auth, cname, 'examplebucket', is_cname=True)
匿名アクセスを使用してoss2.Bucketクラスを初期化
匿名ユーザーは、アクセス制御リスト (ACL) がパブリックの読み取り専用バケットと、ACLがパブリックの読み取り /書き込み専用バケットとを使用できます。 匿名ユーザーは、oss2.Serviceおよびoss2.Bucketクラスに関連する操作を実行できません。
次のサンプルコードは、ACLがpublic-read-writeであるexamplebucketバケットのoss2.Bucketクラスを初期化する方法の例を示しています。
# -*-コーディング: utf-8 -*-
oss2のインポート
# バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。
endpoint = 'yourEndpoint'
# バケットの名前を指定します。 例: examplebucket.
bucket_name = 'examplebucket'
# 匿名アクセスを使用してoss2.Bucketクラスを初期化します。
bucket = oss2.Bucket(oss2.AnonymousAuth(), endpoint, bucket_name)
V4署名アルゴリズムの使用 (推奨)
より安全なV4署名アルゴリズムを使用する場合は、エンドポイントのリージョン情報を指定し、初期化中にoss2.ProviderAuthV4を宣言する必要があります。 OSS SDK for Python 2.18.4以降はV4署名をサポートしています。
次のサンプルコードは、V4署名アルゴリズムを使用して、バケットが配置されているリージョンのエンドポイントを使用してoss2.Bucketクラスを初期化する方法の例を示しています。 V4署名アルゴリズムを使用してバケットにマップされたカスタムドメイン名を使用する方法、または匿名アクセスを使用してoss2.Bucketクラスを初期化する方法のサンプルコードについては、次のサンプルコードを参照して変数を変更します。
# -*-コーディング: utf-8 -*-
oss2のインポート
oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート
# 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、環境変数が設定されていることを確認してください。
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。
endpoint = 'yourEndpoint'
# エンドポイントのリージョンを指定します。 例:cn-hangzhou。
region = 'cn-hangzhou'
# バケットの名前を指定します。
bucket = oss2.Bucket(auth、endpoint、'examplebucket' 、region=region)
oss2.Bucketクラスでサポートされているパラメーター
次の表に、oss2.Bucketクラスを初期化するときに設定できるパラメーターを示します。
パラメーター | 例 | 説明 | メソッド |
is_cname | 正しい | エンドポイントがカスタムドメイン名かどうかを指定します。 有効な値:
| oss2.Bucket(auth, cname, 'examplebucket', is_cname=True) |
セッション | mytestsession | 新しいセッションが開始されることを指定するセッションの名前。 デフォルト値 : なし。 このパラメーターを既存のセッションの名前に設定すると、セッションが再利用されます。 | oss2.Bucket(auth, endpoint, 'examplebucket', session=oss2.Session()) |
connect_timeout | 30 | 接続のタイムアウト期間。 デフォルト値: 60。 単位は秒です。 | oss2.Bucket(auth、endpoint、'examplebucket' 、connect_timeout=30) |
app_name | mytool | OSS SDK for Pythonを使用するアプリケーションの名前。 デフォルトでは、このパラメーターは空です。 パラメータが空でない場合は、User-Agentフィールドに対応する値を指定します。 重要 文字列はHTTPヘッダー値として渡され、HTTP標準に準拠する必要があります。 | oss2.Bucket(auth、endpoint、'examplebucket' 、app_name='mytool') |
enable_crc | False | CRC-64を有効にするかどうかを指定します。
| oss2.Bucket(auth、endpoint、'examplebucket' 、enable_crc=False) |
oss2.Bucketクラス構成のサンプル
このセクションでは、oss2.Bucketクラスの設定方法の例を示します。
接続タイムアウト期間の設定
次のサンプルコードは、接続タイムアウト期間を設定する方法の例を示しています。
# -*-コーディング: utf-8 -*-
oss2のインポート
oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート
# プロジェクトコードにアクセス資格情報を保存しないことをお勧めします。 そうしないと、アクセス資格情報が漏洩する可能性があります。 その結果、アカウント内のすべてのリソースのセキュリティが侵害されます。 この例では、アクセス資格情報は環境変数から取得されます。 サンプルコードを実行する前に、環境変数が設定されていることを確認してください。
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。
endpoint = 'yourEndpoint'
# バケット名を指定し、接続タイムアウト時間を30秒に設定します。
bucket = oss2.Bucket(auth、endpoint、'examplebucket' 、connect_timeout=30)
CRC-64を無効にする
デフォルトでは、オブジェクトのアップロードまたはダウンロード時にデータの整合性を確保するためにCRC-64が有効になります。
CRC-64を無効にしないことを推奨します。 CRC-64を無効にすると、オブジェクトをアップロードまたはダウンロードするときにデータの整合性が影響を受ける可能性があります。
次のサンプルコードは、CRC-64を無効にする方法の例を示します。
# -*-コーディング: utf-8 -*-
oss2のインポート
oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート
# プロジェクトコードにアクセス資格情報を保存しないことをお勧めします。 そうしないと、アクセス資格情報が漏洩する可能性があります。 その結果、アカウント内のすべてのリソースのセキュリティが侵害されます。 この例では、アクセス資格情報は環境変数から取得されます。 サンプルコードを実行する前に、環境変数が設定されていることを確認してください。
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。
endpoint = 'yourEndpoint'
# バケットの名前を指定し、enable_crcをFalseに設定してCRC-64を無効にします。
bucket = oss2.Bucket(auth、endpoint、'examplebucket' 、enable_crc=False)
接続プールサイズの指定
次のサンプルコードは、接続プールサイズを指定する方法の例を示しています。
# -*-コーディング: utf-8 -*-
oss2のインポート
oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート
# プロジェクトコードにアクセス資格情報を保存しないことをお勧めします。 そうしないと、アクセス資格情報が漏洩する可能性があります。 その結果、アカウント内のすべてのリソースのセキュリティが侵害されます。 この例では、アクセス資格情報は環境変数から取得されます。 サンプルコードを実行する前に、環境変数が設定されていることを確認してください。
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。
endpoint = 'yourEndpoint'
# 接続プールのサイズを指定します。 デフォルト値は 10 です。
session=oss2.Session(pool_size=20)
# バケットの名前を指定します。
bucket = oss2.Bucket(auth、endpoint、'examplebucket' 、session=session)
TLSバージョンの指定
TLSバージョンによって、セキュリティとパフォーマンス機能が異なります。 シナリオに基づいてTLSバージョンを選択します。
Python V2.18.1以降のOSS SDKでTLSバージョンを指定できます。
次のサンプルでは、TLSバージョンを1.2に設定する方法の例を示します。
# -*-コーディング: utf-8 -*-
インポートssl
oss2のインポート
requests.adaptersからHTTPAdapterをインポート
oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート
# 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、環境変数が設定されていることを確認してください。
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# SSLアダプターを設定します。
クラスSSLAdapter(HTTPAdapter):
def init_poolmanager(self、* args、**kwargs):
# TLSバージョンを1.2に設定します。
kwargs["ssl_version"] = ssl.PROTOCOL_TLSv1_2
return super().init_poolmanager(* args、**kwargs)
# セッションオブジェクトを作成し、セッションオブジェクトを使用してアダプタを設定します。
session=oss2.Session(adapter=SSLAdapter())
# バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。
endpoint = 'yourEndpoint'
# バケットの名前を指定します。 例: examplebucket.
bucket = oss2.Bucket(auth、endpoint、'examplebucket' 、session=session)
# オブジェクトをアップロードします。
bucket.put_object("example.txt", "hello")
次に何をすべきか
OSS SDK for Pythonを初期化した後、oss2.Serviceクラスとoss2.Bucketクラスを使用してリクエストを開始できます。 詳細については、「OSS SDK For Pythonの使用を開始する」をご参照ください。