このトピックでは、安全かつ効率的な方法で 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'))