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

Object Storage Service:バケットポリシー (Python SDK V2)

最終更新日:Nov 09, 2025

バケットポリシーは、Alibaba Cloud アカウント、RAM ユーザー、RAM ロール、匿名ユーザーなどの識別されたユーザーに対して、指定された OSS リソースへの詳細なアクセスを許可または制限するために使用できる OSS 権限付与ポリシーです。たとえば、別の Alibaba Cloud アカウントに属する RAM ユーザーに、指定された OSS リソースに対する読み取り専用権限を付与できます。

注意事項

  • バケットポリシーを設定する前に、この機能に精通していることを確認してください。詳細については、「バケットポリシー」をご参照ください。

  • このトピックのサンプルコードでは、中国 (杭州) リージョンのリージョン ID cn-hangzhou を例として使用しています。デフォルトでは、パブリックエンドポイントが使用されます。同じリージョン内の他の Alibaba Cloud サービスから OSS にアクセスする場合は、内部エンドポイントを使用します。OSS がサポートするリージョンとエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。

  • バケットポリシーを設定するには oss:PutBucketPolicy 権限、バケットポリシーをクエリするには oss:GetBucketPolicy 権限、バケットポリシーを削除するには oss:DeleteBucketPolicy 権限が必要です。詳細については、「RAM ユーザーへのカスタムポリシーのアタッチ」をご参照ください。

メソッド定義

バケットポリシーの設定

put_bucket_policy(request: PutBucketPolicyRequest, **kwargs) → PutBucketPolicyResult

バケットポリシーのクエリ

get_bucket_policy(request: GetBucketPolicyRequest, **kwargs) → GetBucketPolicyResult

バケットポリシーの削除

delete_bucket_policy(request: DeleteBucketPolicyRequest, **kwargs) → DeleteBucketPolicyResult

パラメーター

タイプ

説明

request

PutBucketPolicyRequest

リクエストパラメーター。詳細については、「PutBucketPolicyRequest」をご参照ください。

GetBucketPolicyRequest

リクエストパラメーター。詳細については、「GetBucketPolicyRequest」をご参照ください。

DeleteBucketPolicyRequest

リクエストパラメーター。詳細については、「DeleteBucketPolicyRequest」をご参照ください。

戻り値

タイプ

説明

PutBucketPolicyResult

戻り値。詳細については、「PutBucketPolicyResult」をご参照ください。

GetBucketPolicyResult

戻り値。詳細については、「GetBucketPolicyResult」をご参照ください。

DeleteBucketPolicyResult

戻り値。詳細については、「DeleteBucketPolicyResult」をご参照ください。

バケットポリシーを設定するメソッドの完全な定義については、「put_bucket_policy」をご参照ください。

バケットポリシーをクエリするメソッドの完全な定義については、「get_bucket_policy」をご参照ください。

バケットポリシーを削除するメソッドの完全な定義については、「delete_bucket_policy」をご参照ください。

サンプルコード

バケットポリシーの設定

次のコードを使用して、バケットポリシーを設定できます。

import argparse
import alibabacloud_oss_v2 as oss

# コマンドラインパラメーターパーサーを作成して、コマンドラインパラメーターを取得します。
parser = argparse.ArgumentParser(description="put bucket policy sample")
parser.add_argument('--region', help='バケットが配置されているリージョン。', required=True)
parser.add_argument('--bucket', help='バケットの名前。', required=True)
parser.add_argument('--endpoint', help='他のサービスが OSS にアクセスするために使用できるドメイン名')

def main():
    # コマンドラインパラメーターを解析します。
    args = parser.parse_args()

    # 環境変数からアクセス資格情報を読み込みます。
    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    # SDK のデフォルト構成を使用します。
    cfg = oss.config.load_default()
    # 資格情報プロバイダーを設定します。
    cfg.credentials_provider = credentials_provider
    # リージョンを設定します。
    cfg.region = args.region
    # エンドポイントが指定されている場合は、構成でエンドポイントを設定します。
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    # OSS クライアントを作成します。
    client = oss.Client(cfg)

    # 次の例は、リソース所有者 (UID が 174649585760xxxx のバケットの所有者) がバケットポリシーを使用して、指定されたユーザー (UID が 20214760404935xxxx の RAM ユーザー) に examplebucket 内のすべてのオブジェクトを一覧表示する権限を付与する方法を示しています。
    policy_text = "{\"Statement\": [{\"Effect\": \"Allow\", \"Action\": [\"oss:GetObject\", \"oss:ListObjects\"], \"Principal\": [\"20214760404935xxxx\"], \"Resource\": [\"acs:oss:*:174649585760xxxx:examplebucket/*\"]}], \"Version\": \"1\"}"

    # 指定されたバケットにポリシーを適用します。
    result = client.put_bucket_policy(oss.PutBucketPolicyRequest(
            bucket=args.bucket,
            body=policy_text,
    ))

    # 結果のステータスコードとリクエスト ID を出力します。
    print(f'status code: {result.status_code}, request id: {result.request_id}')

if __name__ == "__main__":
    main()

バケットポリシーのクエリ

次のコードを使用して、バケットポリシーをクエリできます。

import argparse
import alibabacloud_oss_v2 as oss

# コマンドラインパラメーターパーサーを作成します。
parser = argparse.ArgumentParser(description="get bucket policy sample")
parser.add_argument('--region', help='バケットが配置されているリージョン。', required=True)
parser.add_argument('--bucket', help='バケットの名前。', required=True)
parser.add_argument('--endpoint', help='他のサービスが OSS にアクセスするために使用できるドメイン名')

def main():
    # コマンドラインパラメーターを解析します。
    args = parser.parse_args()

    # 環境変数からアクセス資格情報を読み込みます。
    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    # SDK のデフォルト構成を使用します。
    cfg = oss.config.load_default()
    # 資格情報プロバイダーを、環境変数から資格情報を取得するプロバイダーに設定します。
    cfg.credentials_provider = credentials_provider
    # リージョンを設定します。
    cfg.region = args.region
    # エンドポイントが指定されている場合は、構成でエンドポイントを設定します。
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    # OSS クライアントを作成します。
    client = oss.Client(cfg)

    # get_bucket_policy メソッドを呼び出して、指定されたバケットのポリシーを取得します。
    result = client.get_bucket_policy(oss.GetBucketPolicyRequest(
            bucket=args.bucket,
    ))

    # 返されたステータスコード、リクエスト ID、および応答本文を出力します。
    print(f'status code: {result.status_code},'
            f' request id: {result.request_id},'
            f' body: {result.body},'
    )

# スクリプトがメインプログラムとして実行されるときに main 関数を呼び出します。
if __name__ == "__main__":
    main()

バケットポリシーの削除

次のコードを使用して、バケットポリシーを削除できます。

import argparse
import alibabacloud_oss_v2 as oss

# コマンドラインパラメーターパーサーを作成します。
parser = argparse.ArgumentParser(description="delete bucket policy sample")
parser.add_argument('--region', help='バケットが配置されているリージョン。', required=True)
parser.add_argument('--bucket', help='バケットの名前。', required=True)
parser.add_argument('--endpoint', help='他のサービスが OSS にアクセスするために使用できるドメイン名')

def main():
    # コマンドラインパラメーターを解析します。
    args = parser.parse_args()

    # 環境変数からアクセス資格情報を読み込みます。
    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    # SDK のデフォルト構成を使用します。
    cfg = oss.config.load_default()
    # 資格情報プロバイダーを、環境変数から資格情報を取得するプロバイダーに設定します。
    cfg.credentials_provider = credentials_provider
    # リージョンを設定します。
    cfg.region = args.region
    # エンドポイントが指定されている場合は、構成でエンドポイントを設定します。
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    # OSS クライアントを作成します。
    client = oss.Client(cfg)

    # メソッドを呼び出してバケットポリシーを削除します。
    result = client.delete_bucket_policy(oss.DeleteBucketPolicyRequest(
            bucket=args.bucket,  # 操作が実行されるバケットの名前を指定します。
    ))

    # リクエスト結果のステータスコードとリクエスト ID を出力します。
    print(f'status code: {result.status_code}, request id: {result.request_id}')

# スクリプトがメインプログラムとして実行されるときに main 関数を実行します。
if __name__ == "__main__":
    main()

関連情報

  • バケットポリシーを設定するための完全なサンプルコードについては、「put_bucket_policy.py」をご参照ください。

  • バケットポリシーをクエリするための完全なサンプルコードについては、「get_bucket_policy.py」をご参照ください。

  • バケットポリシーを削除するための完全なサンプルコードについては、「delete_bucket_policy.py」をご参照ください。