スイッチロールしたIAM RoleをPython Boto3で使いたい
検索してここにたどり着いた人はとにかくやり方を知りたいと思うので、まずは結論から。
なお、Profileの登録って何?って方は以下の記事を参考にしてください
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名を統一しないとだめじゃないか、って声が聞こえてきそうですね。 その場合は起動するときの環境変数で対応が可能です。
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版と同一です。
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
まとめ
とにかくすぐ使いたいどうやるんだ!ってケースに対応できる用にシンプルに書いてみました。 誰かの一助になれば幸いです。