アルパカログ

カスタマーサポート (CS) とエンジニアリングを掛け算したい CRE (Customer Reliability Engineer) が気になる技術や思ったことなど。

【Python】MFAアカウントでBoto3からAWS SDKを使う

AWS SDK for Python (Boto3) をMFA を設定したアカウントで下記のように普通に使おうとするとエラーになってしまいます。

import boto3

client = boto3.client('sagemaker-runtime')

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_ARNAWSマネジメントコンソール、IAMのMFAの設定ページに記載されている MFAデバイスの ARN (arn:aws:iam::123456789:mfa/username のようなもの) を、TokenCode にはMFAデバイストークンを入力します。

おまけ: Python3 で簡単に数字をカンマ区切りにする

こんな簡単にできるの知らなかったので...

i = 1000
f'{i:,}'
# > '1,000'

こちらもあわせて読みたい

alpacat.hatenablog.com

alpacat.hatenablog.com