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

:Python用のOSS SDKの初期化

最終更新日:Dec 03, 2024

このトピックでは、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クラスの初期化

(推奨) V4署名アルゴリズムの使用

より良いセキュリティを提供するV4署名アルゴリズムを使用することを推奨します。 V4署名アルゴリズムを使用する場合は、regionパラメーターを含めます。 リージョンパラメーターはAlibaba CloudリージョンIDである必要があります。 例: cn-杭州 oss2.ProviderAuthV4も宣言する必要があります。 OSS SDK for Python 2.18.4以降はV4署名をサポートしています。

次のサンプルコードは、V4署名アルゴリズムを使用して、バケットが配置されているリージョンのエンドポイントを使用してoss2.Bucketクラスを初期化する方法の例を示しています。 V4署名アルゴリズムを使用してバケットにマップされたカスタムドメイン名を使用する方法、または匿名アクセスを使用してoss2.Bucketクラスを初期化する方法のサンプルコードについては、次のサンプルコードを参照して変数を変更します。

# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider

# Obtain access credentials from environment variables. Before you run the sample code, make sure that the environment variables are configured. 
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com. 
endpoint = 'yourEndpoint'
# Specify the region of the endpoint. Example: cn-hangzhou. 
region = 'cn-hangzhou'

# Specify the name of the bucket. 
bucket = oss2.Bucket(auth, endpoint, 'examplebucket', region=region) 

(非推奨) V1署名アルゴリズムの使用

重要

2024年12月1日以降、新しいUIDを持つ新規顧客は、OSSのV1署名アルゴリズムを利用できなくなります。 2025年6月1日以降、OSSはV1署名アルゴリズムを更新および維持しなくなり、V1署名アルゴリズムは新しいバケットで使用できなくなります。 ビジネスへの影響を防ぐため、できるだけ早い機会にV1シグネチャをV4シグネチャにアップグレードします。

OSSエンドポイントを使用したoss2.Bucketクラスの初期化

次のサンプルコードは、OSSエンドポイントを使用してoss2.Bucketクラスを初期化する方法の例を示しています。さまざまなリージョンのOSSエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。

# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider

# Obtain access credentials from environment variables. Before you run the sample code, make sure that the environment variables are configured. 
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())

# Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com. 
endpoint = 'yourEndpoint'

# Specify the name of the bucket. 
bucket = oss2.Bucket(auth, endpoint, 'examplebucket')                    

カスタムドメイン名を使用してoss2.Bucketクラスを初期化

次のサンプルコードでは、カスタムドメイン名を使用してoss2.Bucketクラスを初期化する方法の例を示します。詳細については、「カスタムドメイン名をバケットのデフォルトドメイン名にマップする」をご参照ください。

# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider

# Obtain access credentials from environment variables. Before you run the sample code, make sure that the environment variables are configured. 
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())

# Specify the custom domain name that is mapped to the bucket. Example: example.com. 
cname = 'http://example.com'

# Specify the name of the bucket and set is_cname to True to enable CNAME. CNAME is used to map a custom domain name to a bucket. 
bucket = oss2.Bucket(auth, cname, 'examplebucket', is_cname=True)   

匿名アクセスを使用してoss2.Bucketクラスを初期化

重要

匿名ユーザーは、アクセス制御リスト (ACL) がパブリックの読み取り専用バケットと、ACLがパブリックの読み取り /書き込み専用バケットとを使用できます。 匿名ユーザーは、oss2.Bucketクラスに関連する操作を実行できません。

次のサンプルコードは、ACLがpublic-read-writeであるexamplebucketバケットのoss2.Bucketクラスを初期化する方法の例を示しています。

# -*- coding: utf-8 -*-
import oss2

# Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com. 
endpoint = 'yourEndpoint'

# Specify the name of the bucket. Example: examplebucket.     
bucket_name = 'examplebucket'

# Use anonymous access to initialize the oss2.Bucket class. 
bucket = oss2.Bucket(oss2.AnonymousAuth(), endpoint, bucket_name)

oss2.Bucketクラスでサポートされているパラメーター

次の表に、oss2.Bucketクラスを初期化するときに設定できるパラメーターを示します。

パラメーター

説明

移動方法

is_cname

正しい

エンドポイントがカスタムドメイン名かどうかを指定します。 有効な値:

  • 正しい

  • False (デフォルト)

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を有効にするかどうかを指定します。 デフォルト値:true

  • True (デフォルト)

  • False

oss2.Bucket(auth、endpoint、'examplebucket' 、enable_crc=False)

oss2.Bucketクラスの設定方法の例

次のセクションでは、oss2.Bucketクラスの設定方法の例を示します。

接続タイムアウト期間の設定

次のサンプルコードは、接続タイムアウト期間を設定する方法の例を示しています。

# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider

# We recommend that you do not save access credentials in the project code. Otherwise, access credentials may be leaked. As a result, the security of all resources in your account is compromised. In this example, access credentials are obtained from environment variables. Before you run the sample code, make sure that the environment variables are configured. 
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())

# Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com. 
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# Specify the ID of the region that maps to the endpoint. Example: cn-hangzhou. This parameter is required if you use the signature algorithm V4.
region = "cn-hangzhou"

# Specify the name of the bucket and set the connection timeout period to 30 seconds. 
bucket = oss2.Bucket(auth, endpoint, 'examplebucket', connect_timeout=30,region=region)                    

CRC-64を無効にする

デフォルトでは、オブジェクトのアップロードまたはダウンロード時にデータの整合性を確保するためにCRC-64が有効になります。

警告

CRCを無効にしないことを推奨します。 CRC-64を無効にすると、オブジェクトをアップロードまたはダウンロードするときにデータの整合性が影響を受ける可能性があります。

次のサンプルコードは、CRC-64を無効にする方法の例を示します。

# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider

# We recommend that you do not save access credentials in the project code. Otherwise, access credentials may be leaked. As a result, the security of all resources in your account is compromised. In this example, access credentials are obtained from environment variables. Before you run the sample code, make sure that the environment variables are configured. 
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())

# Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com. 
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# Specify the ID of the region that maps to the endpoint. Example: cn-hangzhou. This parameter is required if you use the signature algorithm V4.
region = "cn-hangzhou"

# Specify the name of the bucket and set enable_crc to False to disable CRC-64. 
bucket = oss2.Bucket(auth, endpoint, 'examplebucket', enable_crc=False,region=region)                   

接続プールサイズの指定

次のサンプルコードは、接続プールサイズを指定する方法の例を示しています。

# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider

# We recommend that you do not save access credentials in the project code. Otherwise, access credentials may be leaked. As a result, the security of all resources in your account is compromised. In this example, access credentials are obtained from environment variables. Before you run the sample code, make sure that the environment variables are configured. 
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())

# Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com. 
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# Specify the ID of the region that maps to the endpoint. Example: cn-hangzhou. This parameter is required if you use the signature algorithm V4.
region = "cn-hangzhou"

# Specify the connection pool size. Default value: 10. 
session = oss2.Session(pool_size=20)

# Specify the name of the bucket. 
bucket = oss2.Bucket(auth, endpoint, 'examplebucket', session=session,region=region)

TLSバージョンの指定

TLSバージョンによって、セキュリティとパフォーマンス機能が異なります。 シナリオに基づいてTLSバージョンを選択します。

説明

Python V2.18.1以降のOSS SDKでTLSバージョンを指定できます。

次のサンプルコードは、TLSバージョンを1.2に設定する方法の例を示しています。

# -*- coding: utf-8 -*-
import ssl
import oss2
from requests.adapters import HTTPAdapter
from oss2.credentials import EnvironmentVariableCredentialsProvider

# Obtain access credentials from environment variables. Before you run the sample code, make sure that the environment variables are configured. 
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())

# Configure the SSL adapter. 
class SSLAdapter(HTTPAdapter):
    def init_poolmanager(self, *args, **kwargs):
        # Set the TLS version to 1.2. 
        kwargs["ssl_version"] = ssl.PROTOCOL_TLSv1_2
        return super().init_poolmanager(*args, **kwargs)

# Create a session object and configure the adapter by using the session object. 
session = oss2.Session(adapter=SSLAdapter())

# Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com. 
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# Specify the ID of the region that maps to the endpoint. Example: cn-hangzhou. This parameter is required if you use the signature algorithm V4.
region = "cn-hangzhou"

# Specify the name of the bucket. Example: examplebucket. 
bucket = oss2.Bucket(auth, endpoint, 'examplebucket', session=session, region=region)

# Upload the object. 
bucket.put_object("example.txt", "hello")

次に何をすべきか

OSS SDK for Pythonを初期化した後、oss2.Serviceクラスとoss2.Bucketクラスを使用してリクエストを開始できます。 詳細については、「OSS SDK For Pythonの使用を開始する」をご参照ください。