boto3でawsアクセス時にconfigとcredentialsを使う

こんにちは。hacknoteのr.katoです。

ふと、boto3関連の過去記事を見返したら、configとcredentialsに関してを書いていなかったので紹介していきます。

ちなみに、みなさんはboto3で認証を得るときにどうしていますか?

boto3.Session(aws_access_key_id = access_key_id, aws_secret_access_key = secret_access_key)

みたいにidとkeyをソースにベタ書きしていますか?

この場合、github等にアップするときとかでミスったら大変ですし、いちいち編集するのもめんどくさいです。

なので、私の場合はconfigとcredentialsに認証情報を書き込み、profileで指定しています。

設定の仕方

前提として、boto3とawscliがインストールされているものとします。

$HOME/.aws にconfigファイルとcredentialsファイルがあれば中身を編集、無ければ作成し、次のような構成にします。

$HOME - .aws - config
             └ credentials
  • configファイルの書き方
[profile1]
region = ap-northeast-1
output = json

[profile2]
region = ap-northeast-1
output = json

といった感じで指定してあげます。

  • credentialsファイルの書き方
[profile1]
aws_access_key_id = XXXXXXXXXXXXX
aws_secret_access_key = XXXXXXXXXXXXX

[profile3]
aws_access_key_id = XXXXXXXXXXXXX
aws_secret_access_key = XXXXXXXXXXXXX

といった感じで指定してあげます。
この時、configファイルとcredentialsファイルでのprofile名が共通の物は、boto3で指定したときにどちらも適用されます。

例えば、configファイルとcredentialsファイルが上記の場合

profile1を指定したら、
region = ap-northeast-1、output = json と id、keyが適用され、

profile3を指定したら、
id、keyのみ適用されます。

boto3でのprofileの指定方法

configファイルとcredentialsファイルを作成したら、次のようにprofileを指定してあげることで、使用できます。

import boto3

session = boto3.Session(profile_name="profile1")

c.f.) clientを使いたい方はこちら