AWSアカウントにはMFA(多要素認証)を設定している場合が多いと思います。
そのため、MFAを設定したアカウントでAWS SDK for Python (Boto3)を使うには、先に認証情報を取得する必要があります。
このエントリでは、MFAアカウントでAWS SDK(Boto3)を使う方法を説明します。
まず、MFAを設定していない場合の例です。
例えばAWS SageMakerのクライアントは次のようにして取得します。
import boto3
client = boto3.client('sagemaker-runtime')
しかし、この方法だとMFAを設定しているアカウントでエラーになってしまいます。
MFAを設定しているアカウントでは次のようにします。
まずSTSクライアントを使って認証情報を取得し、認証情報を使って開始したセッションに対して任意のクライアントを取得します。
import boto3
from boto3.session import Session
sts_client = boto3.client('sts')
sts_res = sts_client.get_session_token(
DurationSeconds=3600,
SerialNumber='MFA_DEVICE_ARN',
TokenCode='111111')
cred = sts_res['Credentials']
session = Session(
aws_access_key_id=cred['AccessKeyId'],
aws_secret_access_key=cred['SecretAccessKey'],
aws_session_token=cred['SessionToken'],
region_name='ap-northeast-1')
client = session.client('sagemaker-runtime')
MFA_DEVICE_ARN
は、MFAデバイスのARNで、arn:aws:iam::123456789:mfa/username
のような文字列です。
AWSマネジメントコンソールを開き、IAMのMFA設定ページで確認できます。
TokenCode
はMFAのワンタイムトークンです。
以上です。このエントリでは、MFAアカウントでAWS SDK(Boto3)を使う方法を説明しました。
コメントを送る
コメントはブログオーナーのみ閲覧できます