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

Object Storage Service:OSS SDK for Python 2.0 を使用した OSS のグローバルなパブリックアクセスブロック

最終更新日:Oct 21, 2025

このトピックでは、OSS SDK for Python 2.0 を使用して、OSS のグローバルなパブリックアクセスブロックを有効にし、グローバルなパブリックアクセスブロックの構成をクエリし、グローバルなパブリックアクセスブロックの構成を削除する方法について説明します。

使用上の注意

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

サンプルコード

OSS のグローバルなパブリックアクセスブロックを有効にする

以下は、グローバルなパブリックアクセスブロックを有効にするためのサンプルコードです。

import argparse
import alibabacloud_oss_v2 as oss

# コマンドライン引数パーサーを作成し、スクリプトの目的を記述します: バケットのパブリックアクセスブロック構成を設定します。
parser = argparse.ArgumentParser(description="put public access block sample")

# 必須のリージョン、バケット名、エンドポイント、およびパブリックアクセスブロックを有効にするかどうかなど、コマンドライン引数を定義します。
parser.add_argument('--region', help='The region in which the bucket is located.', required=True)
parser.add_argument('--bucket', help='The name of the bucket.', required=True)
parser.add_argument('--endpoint', help='The domain names that other services can use to access OSS')
parser.add_argument('--block_public_access',
                    help='Specifies whether to enable Block Public Access. '
                         'true: enables Block Public Access. '
                         'false (default): disables Block Public Access.',
                    default=False, type=bool)

def main():
    # コマンドライン引数を解析して、ユーザーが入力した値を取得します。
    args = parser.parse_args()

    # ID 検証のために環境変数からアクセス資格情報を読み込みます。
    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 クライアントを初期化し、OSS との対話の準備をします。
    client = oss.Client(cfg)

    # 指定されたバケットのパブリックアクセスブロック構成を設定するリクエストを送信します。
    result = client.put_public_access_block(oss.PutPublicAccessBlockRequest(
            bucket=args.bucket,  # バケット名。
            public_access_block_configuration=oss.PublicAccessBlockConfiguration(
                block_public_access=args.block_public_access,  # パブリックアクセスブロックを有効にするかどうかを指定します。
            ),
    ))

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

# このスクリプトが直接実行される場合は、main 関数を呼び出してロジックの処理を開始します。
if __name__ == "__main__":
    main()  # スクリプトのエントリポイント。プログラムのフローはここから始まります。

OSS のグローバルなパブリックアクセスブロックの構成情報をクエリする

以下は、OSS のグローバルなパブリックアクセスブロックの構成をクエリするためのサンプルコードです。

import argparse
import alibabacloud_oss_v2 as oss

# コマンドライン引数パーサーを作成し、スクリプトの目的を記述します: バケットのパブリックアクセスブロック構成を取得します。
parser = argparse.ArgumentParser(description="get public access block sample")

# 必須のリージョンとバケット名、およびオプションのエンドポイントを含むコマンドライン引数を定義します。
parser.add_argument('--region', help='The region in which the bucket is located.', required=True)
parser.add_argument('--bucket', help='The name of the bucket.', required=True)
parser.add_argument('--endpoint', help='The domain names that other services can use to access OSS')

def main():
    # コマンドライン引数を解析して、ユーザーが入力した値を取得します。
    args = parser.parse_args()

    # ID 検証のために環境変数からアクセス資格情報を読み込みます。
    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 クライアントを初期化し、OSS との対話の準備をします。
    client = oss.Client(cfg)

    # 指定されたバケットのパブリックアクセスブロック構成を取得するリクエストを送信します。
    result = client.get_public_access_block(oss.GetPublicAccessBlockRequest(
            bucket=args.bucket,  # バケット名。
    ))

    # 操作結果のステータスコード、リクエスト ID、およびパブリックアクセスブロック構成のステータスを出力して、リクエストのステータスと構成の詳細を確認します。
    print(f'status code: {result.status_code},'
          f' request id: {result.request_id},'
          f' block public access: {result.public_access_block_configuration.block_public_access if hasattr(result.public_access_block_configuration, "block_public_access") else "Not set"},'
          )

# このスクリプトが直接実行される場合は、main 関数を呼び出してロジックの処理を開始します。
if __name__ == "__main__":
    main()  # スクリプトのエントリポイント。プログラムのフローはここから始まります。

OSS のグローバルなパブリックアクセスブロックの構成情報を削除する

以下は、OSS のグローバルなパブリックアクセスブロックの構成を削除するためのサンプルコードです。

import argparse
import alibabacloud_oss_v2 as oss

# コマンドライン引数パーサーを作成し、スクリプトの目的を記述します: バケットのパブリックアクセスブロック構成を削除します。
parser = argparse.ArgumentParser(description="delete public access block sample")

# 必須のリージョンとバケット名、およびオプションのエンドポイントを含むコマンドライン引数を定義します。
parser.add_argument('--region', help='The region in which the bucket is located.', required=True)
parser.add_argument('--bucket', help='The name of the bucket.', required=True)
parser.add_argument('--endpoint', help='The domain names that other services can use to access OSS')

def main():
    # コマンドライン引数を解析して、ユーザーが入力した値を取得します。
    args = parser.parse_args()

    # ID 検証のために環境変数からアクセス資格情報を読み込みます。
    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 クライアントを初期化し、OSS との対話の準備をします。
    client = oss.Client(cfg)

    # 指定されたバケットのパブリックアクセスブロック構成を削除するリクエストを送信します。
    result = client.delete_public_access_block(oss.DeletePublicAccessBlockRequest(
            bucket=args.bucket,  # バケット名。
    ))

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

# このスクリプトが直接実行される場合は、main 関数を呼び出してロジックの処理を開始します。
if __name__ == "__main__":
    main()  # スクリプトのエントリポイント。プログラムのフローはここから始まります。