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

Object Storage Service:Python 用 OSS SDK を使用してリージョンのエンドポイントをクエリする

最終更新日:Mar 21, 2025

このトピックでは、Python SDK V2 を使用して、サポートされているすべてのリージョンまたは特定のリージョンのエンドポイントをクエリする方法について説明します。インターネットアクセス (IPv4) エンドポイント、内部アクセス (クラシックネットワークまたは VPC ネットワーク) エンドポイント、およびアクセラレーションエンドポイント (グローバルアップロードおよびダウンロードアクセラレーション) について説明します。

注記

  • これらのリージョンにバケットを作成していない場合でも、サポートされているすべてのリージョンまたは特定のリージョンのエンドポイントをクエリできます。

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

サポートされているすべてのリージョンのエンドポイントをクエリする

以下は、サポートされているすべてのリージョンのエンドポイントをクエリする方法の例です。

import argparse
import alibabacloud_oss_v2 as oss

# コマンドライン引数パーサーを作成し、スクリプトの目的を記述します。このサンプルは、OSS でサポートされているリージョン情報をクエリする方法を示しています。
parser = argparse.ArgumentParser(description="describe regions sample")

# --region パラメーターを指定します。これは、バケットが配置されているリージョンを示します。このパラメーターは必須です。
parser.add_argument('--region', help='The region in which the bucket is located.', required=True)
# --bucket パラメーターを指定します。これは、バケットの名前を示します。このパラメーターは必須です。
parser.add_argument('--bucket', help='The name of the bucket.', required=True)
# --endpoint パラメーターを指定します。これは、他のサービスが OSS にアクセスするために使用できるドメイン名を指定します。このパラメーターはオプションです。
parser.add_argument('--endpoint', help='The domain names that other services can use to access OSS')
# --regions パラメーターを指定します。これは、リージョン情報を示します。このパラメーターはオプションです。
parser.add_argument('--regions', help='Regional information.')

def main():
    # コマンドラインで提供されたパラメーターを解析して、ユーザーが入力した値を取得します
    args = parser.parse_args()

    # 環境変数から OSS にアクセスするために必要な認証情報をロードします
    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    # SDK のデフォルト設定を使用して設定オブジェクトを作成し、資格情報プロバイダーを指定します
    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider
    cfg.region = args.region

    # カスタムエンドポイントが提供されている場合は、設定オブジェクトの endpoint パラメーターを変更します
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    # 前述の設定を使用して OSSClient インスタンスを初期化し、インスタンスが OSS と対話できるようにします
    client = oss.Client(cfg)

    # リージョン情報を取得するためのリクエストを送信します
    result = client.describe_regions(oss.DescribeRegionsRequest(
        regions=args.regions,
    ))

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

    # 各リージョンの詳細をトラバースして出力します
    for rg in result.region_info:
        print(f'region: {rg.region},'
              f' internet endpoint: {rg.internet_endpoint},'
              f' internal endpoint: {rg.internal_endpoint},'
              f' accelerate endpoint: {rg.accelerate_endpoint}'
        )

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

特定のリージョンのエンドポイントをクエリする

以下のサンプルコードは、特定のリージョンのエンドポイントをクエリする方法を示しています。

import argparse
import alibabacloud_oss_v2 as oss

# コマンドライン引数パーサーを作成し、スクリプトの目的を記述します。このサンプルは、OSS でサポートされているリージョン情報をクエリする方法を示しています
parser = argparse.ArgumentParser(description="describe regions sample")

# --region パラメーターを指定します。これは、バケットが配置されているリージョンを示します。このパラメーターは必須です。
parser.add_argument('--region', help='The region in which the bucket is located.', required=True)
# --bucket パラメーターを指定します。これは、バケットの名前を示します。このパラメーターは必須です。
parser.add_argument('--bucket', help='The name of the bucket.', required=True)
# --endpoint パラメーターを指定します。これは、他のサービスが OSS にアクセスするために使用できるドメイン名を指定します。このパラメーターはオプションです。
parser.add_argument('--endpoint', help='The domain names that other services can use to access OSS')
# --regions パラメーターを指定します。これは、リージョン情報を示します。このパラメーターはオプションです。
parser.add_argument('--regions', help='Regional information.')

def main():
    # コマンドラインで提供されたパラメーターを解析して、ユーザーが入力した値を取得します
    args = parser.parse_args()

    # 環境変数から OSS にアクセスするために必要な認証情報をロードします
    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    # SDK のデフォルト設定を使用して設定オブジェクトを作成し、資格情報プロバイダーを指定します
    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider
    cfg.region = args.region

    # カスタムエンドポイントが提供されている場合は、設定オブジェクトの endpoint パラメーターを変更します
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    # 前述の設定を使用して OSSClient インスタンスを初期化し、インスタンスが OSS と対話できるようにします
    client = oss.Client(cfg)

    # リージョン情報を取得するためのリクエストを送信します
    result = client.describe_regions(oss.DescribeRegionsRequest(
        regions=args.regions, # 中国 (杭州) の例として oss-cn-hangzhou を使用します。他のリージョンの場合は、実際のリージョンを指定します。
    ))

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

    # 各リージョンの詳細をトラバースして出力します
    for rg in result.region_info:
        print(f'region: {rg.region},'
              f' internet endpoint: {rg.internet_endpoint},'
              f' internal endpoint: {rg.internal_endpoint},'
              f' accelerate endpoint: {rg.accelerate_endpoint}'
        )

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

関連情報

  • リージョンのエンドポイント情報をクエリする API インターフェースの説明については、「DescribeRegions」をご参照ください。