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

Object Storage Service:初期化

最終更新日:Aug 13, 2025

このトピックでは、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 ペアを使用していることに注意してください。

(推奨)V4 署名アルゴリズムを使用する

重要
  • V4 署名アルゴリズムを使用して Python 用 OSS SDK を初期化する場合は、エンドポイントを指定する必要があります。 この例では、中国 (杭州) リージョンのパブリックエンドポイント https://oss-cn-hangzhou.aliyuncs.com が使用されています。 OSS と同じリージョン内の他の Alibaba Cloud サービスから OSS にアクセスする場合は、内部エンドポイントを使用します。 他のリージョンのパブリックエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。

  • V4 署名アルゴリズムを使用する場合は、リクエストが開始されるリージョンの識別子として Alibaba Cloud リージョン ID を指定する必要があります。 この例では、中国 (杭州) リージョンのリージョン ID cn-hangzhou が使用されています。 他のリージョンのリージョン ID の詳細については、「リージョンとエンドポイント」をご参照ください。

次のサンプルコードは、OSS エンドポイントを使用して V4 署名アルゴリズムを使用して Python 用 OSS SDK を初期化する方法の例を示しています。

# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import 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) 

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

重要

2025 年 3 月 1 日以降、OSS の V1 署名アルゴリズムは、新しい UID を持つ新規のお客様にはご利用いただけなくなります。 2025 年 9 月 1 日以降、OSS は V1 署名アルゴリズムの更新と保守を行わなくなり、V1 署名アルゴリズムは新しいバケットにはご利用いただけなくなります。ビジネスへの影響を防ぐため、できるだけ早く V1 署名を V4 署名にアップグレードしてください。

次のサンプルコードは、OSS エンドポイントを使用して V1 署名アルゴリズムを使用して Python 用 OSS SDK を初期化する方法の例を示しています。

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

# 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、環境変数が構成されていることを確認してください。
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())

# バケットが配置されているリージョンのエンドポイントを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
endpoint = 'yourEndpoint'

# バケットの名前を指定します。
bucket = oss2.Bucket(auth, endpoint, 'examplebucket')                    

一般的なシナリオでの構成例

このセクションでは、一般的なシナリオでの構成例を示します。 サンプルコードでは、デフォルトで 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

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

  • True

  • False (デフォルト)

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 を有効にするかどうかを指定します。

  • True (デフォルト)

  • False

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

よくある質問

バケットが配置されているのと同じリージョン内の他の Alibaba Cloud サービスを使用して OSS にアクセスする場合、内部エンドポイントを使用してデータ転送を高速化できますか?

はい、内部エンドポイントを使用してデータ転送を高速化できます。 データ転送の要件がある場合は、OSS と同じリージョンにある ECS インスタンスなどの他の Alibaba Cloud サービスを使用して OSS にアクセスすることをお勧めします。 詳細については、「同じリージョン内の ECS インスタンスからのアクセス」をご参照ください。

RAM ユーザーの AccessKey ID を表示するにはどうすればよいですか? 古い AccessKey ペアの AccessKey シークレットを表示できますか?

  1. RAM ユーザーの AccessKey ID を表示するには、RAM コンソール にログインします。

  2. RAM ユーザーの AccessKey シークレットは、AccessKey ペアの作成時にのみ表示されます。 後で AccessKey ペアを表示することはできません。 AccessKey シークレットを忘れた場合は、AccessKey シークレットを取得できません。 RAM コンソール で特定の RAM ユーザーを直接選択し、ローテーション用に新しい AccessKey ペアを作成できます。 詳細については、「AccessKey ペアを作成する」をご参照ください。

エラーが報告された場合、エラーの特定のタイプを特定するにはどうすればよいですか?

OSS は、エラーの特定のタイプを特定するのに役立つ エラーコード を提供しています。 たとえば、一般的な認証エラーについては、02-AUTH を参照してください。