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

Alibaba Cloud SDK:アクセス認証情報の管理

最終更新日:Jan 15, 2025

このトピックでは、安全かつ効率的な方法で SDK を開発に使用できるように、アクセス認証情報を構成する方法について説明します。

AccessKey ペアの使用

import os

from aliyunsdkcore.client import AcsClient
from aliyunsdkecs.request.v20140526.DescribeRegionsRequest import DescribeRegionsRequest

# SDK クライアントを初期化します。
client = AcsClient(
    os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID'),  # 環境変数から Resource Access Management (RAM) ユーザーの AccessKey ID を取得します。
    os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET'),  # 環境変数から RAM ユーザーの AccessKey シークレットを取得します。
    '<region_id>'  # リージョン ID。
)

# API リクエストを作成し、パラメータを構成します。
request = DescribeRegionsRequest()

# リクエストを送信します。
response = client.do_action_with_exception(request)
print(str(response, encoding='utf-8'))

STS トークンの使用

ビジネスのセキュリティを確保するために、Security Token Service (STS) から一時的なセキュリティ認証情報 (TSC) を申請して、一時的なクライアントを作成できます。

import os

from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.auth.credentials import StsTokenCredential
from aliyunsdkecs.request.v20140526.AcceptInquiredSystemEventRequest import AcceptInquiredSystemEventRequest

cred = StsTokenCredential(
    sts_access_key_id=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID'),  # 環境変数から STS によって提供される AccessKey ID を取得します。
    sts_access_key_secret=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET'),  # 環境変数から STS によって提供される AccessKey シークレットを取得します。
    sts_token=os.environ.get('ALIBABA_CLOUD_SECURITY_TOKEN')  # 環境変数から STS によって提供される STS トークンを取得します。
)

client = AcsClient(
    region_id='<region_id>',
    credential=cred
)

request = AcceptInquiredSystemEventRequest()
request.set_accept_format('json')
response = client.do_action_with_exception(request)

print(str(response, encoding='utf-8'))

RAM ロールの使用

クライアントに RAM ロールを割り当てることができます。その後、クライアントは API リクエストを開始する前に、STS トークンを自動的に申請および維持できます。このようにして、クライアントは有効期間を持つ STS クライアントになります。STS トークンを手動で申請して、STS クライアントを作成することもできます。

import os

from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.auth.credentials import RamRoleArnCredential
from aliyunsdkecs.request.v20140526.DescribeRegionsRequest import DescribeRegionsRequest

cred = RamRoleArnCredential(
    sts_access_key_id=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID'),  # 環境変数から RAM ユーザーの AccessKey ID を取得します。
    sts_access_key_secret=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET'),  # 環境変数から RAM ユーザーの AccessKey シークレットを取得します。
    role_arn='<ram_role_arn>',
    session_role_name='<session_role_name>'
)

client = AcsClient(
    region_id='<region_id>',
    credential=cred
)

request = DescribeRegionsRequest()
response = client.do_action_with_exception(request)
print(str(response, encoding='utf-8'))

ECS インスタンスの RAM ロールの使用

Elastic Compute Service (ECS) インスタンスにアタッチされている RAM ロールをクライアントに割り当てることができます。その後、クライアントは http://100.100.100.200/latest/meta-data/ram/security-credentials/ から STS トークンを申請します。

from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.auth.credentials import EcsRamRoleCredential
from aliyunsdkecs.request.v20140526.AcceptInquiredSystemEventRequest import AcceptInquiredSystemEventRequest

cred = EcsRamRoleCredential(
    role_name='<ram_role_name>'
)

client = AcsClient(
    region_id='<region_id>',
    credential=cred
)

request = AcceptInquiredSystemEventRequest()
request.set_accept_format('json')
response = client.do_action_with_exception(request)
print(str(response, encoding='utf-8'))

デフォルト認証情報の使用

SDK クライアントは、環境変数で認証情報を検索します。ALIYUN_ACCESS_KEY_ID 変数と ALIYUN_ACCESS_KEY_SECRET 変数が定義および指定されている場合、指定された AccessKey ペアがデフォルト認証情報として使用されます。

from aliyunsdkcore.client import AcsClient
from aliyunsdkecs.request.v20140526.DescribeRegionsRequest import DescribeRegionsRequest

# SDK クライアントを初期化します。
client = AcsClient(
    =region_id='<region_id>'  # リージョン ID。
)

# API リクエストを作成し、パラメータを構成します。
request = DescribeRegionsRequest()

# リクエストを送信します。
response = client.do_action_with_exception(request)
print(str(response, encoding='utf-8'))