スイッチロールしたIAM RoleをPython Boto3で使いたい

スイッチロールしたIAM RoleをPython Boto3で使いたいことってありますよね。
2019.11.22

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

検索してここにたどり着いた人はとにかくやり方を知りたいと思うので、まずは結論から。

なお、Profileの登録って何?って方は以下の記事を参考にしてください

【小ネタ】AWS CLIでスイッチロールして作業を行うための設定をやってみた

Profile名をソースコードに埋め込むパターン

from boto3.session import Session

session = boto3.Session(profile_name="switch-role-name")
s3_client = session.client("s3")
s3_client.list_buckets()

Profile名は環境変数で設定するパターン(Mac/Linux)

ソースコードに埋め込む場合、コードを展開するケースですとprofile名を統一しないとだめじゃないか、って声が聞こえてきそうですね。 その場合は起動するときの環境変数で対応が可能です。

boto3_switch_role_2.py

import boto3
s3_client = boto3.client("s3")
s3_client.list_buckets()

上記を起動するときに以下のようにすることで用いることが可能です。

export AWS_PROFILE=switch-role-name
python boto3_switch_role_2.py

上記で実行した場合ですと環境変数に値を書き込んでしまっているので、実行後には必要に応じて環境変数の値は削除したほうが良いかもしれません。削除は以下で行うことが可能です。

unset AWS_PROFILE

あとは以下のような書き方もできるようです。

AWS_PROFILE=switch-role-name python boto3_switch_role_2.py

Profile名は環境変数で設定するパターン(Windows)

ソースコードはMac/Linux版と同一です。

boto3_switch_role_2.py

import boto3
s3_client = boto3.client("s3")
s3_client.list_buckets()

動かすときの環境変数の設定方法が異なります。

set AWS_PROFILE=switch-role-name
python boto3_switch_role_2.py

Windows環境の環境変数の削除は以下のようにするようです。

set AWS_PROFILE=

ここらへんの情報ってどこを見ると載っているの?

boto3のドキュメントを参照にしました。

Credentials — Boto 3 Docs 1.10.23 documentation

まとめ

とにかくすぐ使いたいどうやるんだ!ってケースに対応できる用にシンプルに書いてみました。 誰かの一助になれば幸いです。