🔥

AWS SDK for python(Boto3)は認証情報をどこに置くか?

2022/04/02に公開

背景

AWS SDK for python(Boto3)を利用したかったが、認証方法がいくつかあるようなので、整理してみました。
優先順位もあるので、混乱すると認証が通らないとか発生しそうです…

https://boto3.amazonaws.com/v1/documentation/api/latest/index.html
このドキュメントの抜粋になります。

内容

1.インストール

pythonのモジュール管理ツールpipでインストールします。
環境によってはpip3とかpipでは推奨ではないですが、sudoが必要である場合がありますので、そのあたりは調整してください。

pip install boto3

2.認証情報:configure(file)による設定

これは、ファイルによって認証情報をおいておく方法です。
~/.aws/credentialsにファイルを作成して、内容を下記のようにしておきます。

~/.aws/credentials
[default]
aws_access_key_id = YOUR_ACCESS_KEY
aws_secret_access_key = YOUR_SECRET_KEY

~がある通り、実行するユーザによって参照するフォルダが異なるため、Pythonを実行するユーザには気をつけてください。

<構成ファイルで設定可能な項目>
https://boto3.amazonaws.com/v1/documentation/api/latest/guide/configuration.html#using-a-configuration-file

3.認証情報:環境変数による設定

環境変数に認証情報をおいておく方法です。

export AWS_ACCESS_KEY_ID=YOUR_ACCESS_KEY
export AWS_SECRET_ACCESS_KEY=YOUR_SECRET_KEY

こちらも、実行時に該当の環境変数が有効になっていることを気をつける必要があります。
コンテナ環境などを構築する場合に便利そうですね。

<環境変数で設定可能な項目>
https://boto3.amazonaws.com/v1/documentation/api/latest/guide/configuration.html#using-environment-variables

4.認証情報:ソースコードによる設定

ソースコード上で指定を行う方法です。

import boto3
client = boto3.client(
    's3',
    aws_access_key_id=ACCESS_KEY,
    aws_secret_access_key=SECRET_KEY,
    aws_session_token=SESSION_TOKEN
)
import boto3
session = boto3.Session(
    aws_access_key_id=ACCESS_KEY,
    aws_secret_access_key=SECRET_KEY,
    aws_session_token=SESSION_TOKEN
)

<元記事>
https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html#passing-credentials-as-parameters

気になった部分

AWS_SESSION_TOKEN?

AWS_SESSION_TOKENは一時的な資格情報を利用している場合のみに利用するものらしい。
詳細は後で調べるが、基本的にはアクセスキーとシークレットキーだけで問題なく動作する。

優先度は?

下記の順序で優先される。

  1. ソースコード
  2. 環境変数
  3. ファイル

<元記事>
https://boto3.amazonaws.com/v1/documentation/api/latest/guide/configuration.html#overview

Discussion