このトピックでは、Python 用の Object Storage Service (OSS) SDK を初期化する方法について説明します。
使用上の注意
Python 用 OSS SDK を初期化する前に、アクセス認証情報を構成する必要があります。このトピックでは、アクセス認証情報は環境変数から取得されます。 詳細については、「アクセス認証情報を構成する (Python SDK V1)」をご参照ください。
OSS リージョンとエンドポイントに関する情報を取得する場合は、「リージョンとエンドポイント」をご参照ください。
RAM ユーザーの AccessKey ペアを作成する場合は、「AccessKey ペアを作成する」をご参照ください。
Python 用 OSS SDK のほとんどの操作は、oss2.Service クラスと oss2.Bucket クラスに基づいて実行されます。
oss2.Service クラスは、バケットを一覧表示するために使用されます。
oss2.Bucket クラスは、オブジェクトのアップロード、ダウンロード、削除、およびバケットの構成に使用されます。
oss2.Service クラスと oss2.Bucket クラスを初期化するときは、バケットが配置されているリージョンのエンドポイントを指定する必要があります。 oss2.Service クラスは、バケットにマッピングされているカスタムドメイン名を使用したバケットへのアクセスをサポートしていません。
前提条件
クライアントを構成する前に、RAM ユーザーの AccessKey ペアを使用して環境変数を構成しています。
デフォルトの例
このセクションでは、V4 署名アルゴリズムと V1 署名アルゴリズムを使用して Python 用 OSS SDK を初期化する方法の例を示します。
次のサンプルコードでは、バケットのパブリックエンドポイントと RAM ユーザーの AccessKey ペアを使用していることに注意してください。
(非推奨)V1 署名アルゴリズムを使用する
一般的なシナリオでの構成例
このセクションでは、一般的なシナリオでの構成例を示します。 サンプルコードでは、デフォルトで V4 署名アルゴリズムと RAM ユーザーの AccessKey ペアを使用して Python 用 OSS SDK を初期化します。
内部エンドポイントを使用して Python 用 OSS SDK を初期化する
アプリケーションが ECS インスタンスにデプロイされていて、ECS インスタンスと同じリージョンにあるバケット内の OSS データに頻繁にアクセスする必要がある場合は、内部エンドポイントを使用してネットワークレイテンシと帯域幅コストを大幅に削減します。
次のサンプルコードは、内部エンドポイントを使用して OSSClient インスタンスを構成する方法の例を示しています。
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、環境変数が構成されていることを確認してください。
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、エンドポイントを https://oss-cn-hangzhou-internal.aliyuncs.com に設定します。
endpoint = 'yourEndpoint'
# エンドポイントのリージョンを指定します。例: cn-hangzhou。
region = 'cn-hangzhou'
# バケットの名前を指定します。
bucket = oss2.Bucket(auth, endpoint, 'examplebucket', region=region) カスタムドメイン名を使用して Python 用 OSS SDK を初期化する
用途の異なるバケットが複数ある場合は、各バケットに異なるサブドメインを指定して、リソースをより適切に管理および整理できます。
次のサンプルコードは、カスタムドメイン名を使用して OSSClient インスタンスを構成する方法の例を示しています。
最初に、カスタムドメイン名をバケットのデフォルトドメイン名にマッピングする必要があります。 そうしないと、エラーが報告されます。 カスタムドメイン名をバケットのデフォルトドメイン名にマッピングする方法の詳細については、「カスタムドメイン名をバケットのデフォルトドメイン名にマッピングする」をご参照ください。
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、環境変数が構成されていることを確認してください。
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
// カスタムドメイン名を指定します。例: https://static.example.com。
endpoint = 'yourEndpoint'
# エンドポイントのリージョンを指定します。例: cn-hangzhou。
region = 'cn-hangzhou'
# バケットの名前を指定します。 is_cname を true に設定して CNAME を有効にします。
bucket = oss2.Bucket(auth, endpoint, 'examplebucket', is_cname=True, region=region)
接続タイムアウト期間を構成する
次のサンプルコードは、接続タイムアウト期間を構成する方法の例を示しています。
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# プロジェクトコードにアクセス認証情報を保存しないことをお勧めします。 そうしないと、アクセス認証情報が漏洩する可能性があります。 その結果、アカウント内のすべてのリソースのセキュリティが危険にさらされます。 この例では、アクセス認証情報は環境変数から取得されます。サンプルコードを実行する前に、環境変数が構成されていることを確認してください。
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# エンドポイントのリージョンを指定します。例: cn-hangzhou。このパラメーターは、V4 署名アルゴリズムを使用する場合に必須です。
region = "cn-hangzhou"
# バケットの名前を指定し、接続タイムアウト期間を 30 秒に設定します。
bucket = oss2.Bucket(auth, endpoint, 'examplebucket', connect_timeout=30,region=region) CRC-64 を無効にする
デフォルトでは、オブジェクトをアップロードまたはダウンロードするときにデータの整合性を確保するために CRC-64 が有効になっています。
CRC-64 を無効にしないことをお勧めします。 CRC-64 を無効にすると、オブジェクトのアップロードまたはダウンロード時にデータの整合性が影響を受ける可能性があります。
次のサンプルコードは、CRC-64 を無効にする方法の例を示しています。
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# プロジェクトコードにアクセス認証情報を保存しないことをお勧めします。 そうしないと、アクセス認証情報が漏洩する可能性があります。 その結果、アカウント内のすべてのリソースのセキュリティが危険にさらされます。 この例では、アクセス認証情報は環境変数から取得されます。サンプルコードを実行する前に、環境変数が構成されていることを確認してください。
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# エンドポイントのリージョンを指定します。例: cn-hangzhou。このパラメーターは、V4 署名アルゴリズムを使用する場合に必須です。
region = "cn-hangzhou"
# バケットの名前を指定し、enable_crc を False に設定して CRC-64 を無効にします。
bucket = oss2.Bucket(auth, endpoint, 'examplebucket', enable_crc=False,region=region) 接続プールサイズを指定する
次のサンプルコードは、接続プールサイズを指定する方法の例を示しています。
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# プロジェクトコードにアクセス認証情報を保存しないことをお勧めします。 そうしないと、アクセス認証情報が漏洩する可能性があります。 その結果、アカウント内のすべてのリソースのセキュリティが危険にさらされます。 この例では、アクセス認証情報は環境変数から取得されます。サンプルコードを実行する前に、環境変数が構成されていることを確認してください。
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# エンドポイントのリージョンを指定します。例: cn-hangzhou。このパラメーターは、V4 署名アルゴリズムを使用する場合に必須です。
region = "cn-hangzhou"
# 接続プールサイズを指定します。デフォルト値: 10。
session = oss2.Session(pool_size=20)
# バケットの名前を指定します。
bucket = oss2.Bucket(auth, endpoint, 'examplebucket', session=session,region=region)TLS バージョンを指定する
Transport Layer Security (TLS) のバージョンによって、セキュリティとパフォーマンスの機能が異なります。 シナリオに基づいて TLS バージョンを選択してください。
Python 2.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
# 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、環境変数が構成されていることを確認してください。
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# SSL アダプターを構成します。
class 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 = "https://oss-cn-hangzhou.aliyuncs.com"
# エンドポイントのリージョンを指定します。例: cn-hangzhou。このパラメーターは、V4 署名アルゴリズムを使用する場合に必須です。
region = "cn-hangzhou"
# バケットの名前を指定します。例: examplebucket。
bucket = oss2.Bucket(auth, endpoint, 'examplebucket', session=session, region=region)
# オブジェクトをアップロードします。
bucket.put_object("example.txt", "hello")oss2.Bucket クラスでサポートされているパラメーター
次の表に、oss2.Bucket クラスを初期化するときに構成できるパラメーターを示します。
パラメーター | 例 | 説明 | メソッド |
is_cname | True | エンドポイントがカスタムドメイン名かどうかを指定します。有効な値:
| oss2.Bucket(auth, cname, 'examplebucket', is_cname=True, region=region) |
session | mytestsession | 新しいセッションが開始されることを指定するセッションの名前。 デフォルト値: なし。 このパラメーターを既存のセッションの名前に設定すると、セッションが再利用されます。 | oss2.Bucket(auth, endpoint, 'examplebucket', session=oss2.Session(), region=region) |
connect_timeout | 30 | 接続のタイムアウト期間。 デフォルト値: 60。単位: 秒。 | oss2.Bucket(auth, endpoint, 'examplebucket', connect_timeout=30, region=region) |
app_name | mytool | Python 用 OSS SDK を使用するアプリケーションの名前。 デフォルトでは、このパラメーターは空のままです。 パラメーターが空でない場合は、User-Agent フィールドに対応する値を指定します。 重要 文字列は HTTP ヘッダー値として渡され、HTTP 標準に準拠している必要があります。 | oss2.Bucket(auth, endpoint, 'examplebucket', app_name='mytool', region=region) |
enable_crc | False | CRC-64 を有効にするかどうかを指定します。
| oss2.Bucket(auth, endpoint, 'examplebucket', enable_crc=False, region=region) |