このトピックでは、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)
# 他のサービスが OSS にアクセスするために使用できるドメイン名を示す --endpoint パラメーターを指定します。このパラメーターはオプションです。
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}'
)
# スクリプトが直接実行されたときに main 関数を呼び出して処理ロジックを開始します
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)
# 他のサービスが OSS にアクセスするために使用できるドメイン名を示す --endpoint パラメーターを指定します。このパラメーターはオプションです。
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}'
)
# スクリプトが直接実行されたときに main 関数を呼び出して処理ロジックを開始します
if __name__ == "__main__":
main() # スクリプトのエントリポイント。ここからプログラムのフローが開始されます
参考資料
-
リージョンのエンドポイント情報をクエリするための API インターフェイスの説明については、「DescribeRegions」をご参照ください。