Intellijではboto3操作時のCredential設定が簡単です
はじめに
データアナリティクス事業本部のkobayashiです。
Intellij&PycharmをメインIDEにして開発を行っています。PythonスクリプトでBoto3を使ってAWSリソースを扱うことが多いのですが、その際に認証情報をIntellijのAWS Toolkitプラグインを使うようにしたところとても幸せになったのでまとめます。
環境
- IntelliJ IDEA 2021.3.2
- PyCharm 2021.3.2
- AWS Toolkit 1.40
Boto3で認証情報を使う
通常ローカルでの開発でBoto3で認証情報を使うには以下のパターンが主な方法かと思います。
- clientメソッド、 resourceメソッドで認証情報を指定する
- Sessionオブジェクト生成時に認証情報を指定する
- 環境変数で認証情報を渡す
~/.aws/credentials
のdefaultに認証情報を設定する
コード例
import boto3 # Let's use Amazon S3 session = boto3.Session(profile_name='cm_sspg') s3 = session.resource('s3') # Print out bucket names for bucket in s3.buckets.all(): print(bucket.name)
上記の何れの場合でも「ソースに認証情報をベタ書きする」or「外部で設定した認証情報を読み込む」必要があります。これだとソースコードに余計な記述が必要だったり、認証情報の変更時のメンテナンス性が悪いです。また特にIAMユーザーにMFAが設定されている場合はそのスクリプトの実行の都度パスコードを入力する必要がありかなりの手間です。
Enter MFA code for arn:aws:iam::1234567890:mfa/iam_user_name:
これまで自分は自作のオレオレモジュールを作ってMFA認証を回避していましたが欠点としてソースにモジュールを読み込む記述をしなければならず本番環境などへPushする際に記述を削除する手間がありました。
ただ今回AWS Toolkitをよくよくいじっていると簡単にこれらの欠点をなくす方法があったのでその設定を行ってみます。
AWS Toolkitで認証情報を使う
AWS Toolkitでは認証情報は認証情報ファイルに登録してあるProfileから選択します。したがって~/.aws/credentials
にProfileを登録しておきます。
AWS Toolkitでの設定
はじめにAWS Toolkit をインストールします。Preferences > Plugins
から簡単にインストールできるので予めインストールしておきます。
次にツールウィンドウからAWS Toolkit
を開き、使いたいProfileを選択します。MFAが設定されていない場合はこれだけで終わりです。
MFAのパスコードを入力
MFAが設定されている場合はProfileの選択後MFAパスコードを入力する必要があります。
次にツールウィンドウのEnter MFA code
を押下する。
MFAパスコードを入力するモーダルが表示されるのでパスコードを入力する。
Pythonスクリプトの実行環境を設定
AWS ToolkitでAWSリソースが扱えるようになったのでPython実行時にこの認証情報を使うように設定します。実行するスクリプトはS3のバケット名を取得する以下のスクリプトになります。
import boto3 # Let's use Amazon S3 s3 = boto3.resource('s3') # Print out bucket names for bucket in s3.buckets.all(): print(bucket.name)
Intellij(PyCharm)でPythonスクリプトのRun Configurationを開きEdit Configurations templates
を選択する
Pythonの項目を選択しAWS Connection
タブを開く。Use the currently selected credential profile/region
を選択し、Applyする。
以上で設定は終わりです。後はIDE上でPythonスクリプトを実行すると現在AWS Toolkitで選択しているProfileを使ってBoto3を使うことができます。もちろんMFAのパスコードも聞かれることはありません。
まとめ
Intellij(PyCharm)のAWS Toolkitの認証情報機能でBoto3実行時のProfile指定を行ってみました。コードを修正する必要や環境変数に認証情報を設定する必要がなくそれらの設定の手間がなくなります。Profileの切り替えも簡単です。特にMFAを設定してあるユーザープロファイルを使う場合はパスコードを入力する手間がなくなるので非常に便利です。
最後まで読んで頂いてありがとうございました。