Site cover image
Python MFAアカウントでAWS SDK(Boto3)を使う方法(STS)

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)を使う方法を説明しました。

Thank you!
Thank you!
URLをコピーしました

コメントを送る

コメントはブログオーナーのみ閲覧できます