2015 年 2月 6 日更新、2015 年 3 月 19 日をトップ セクションに従って修正
boto および AWSCLI 資格情報の新しい標準化された共有 (boto>==2.29.0)
boto 2.29 以降、BOTO および AWS CLI 資格情報を共有するための新しい簡単な方法があります。Mike Garnaatが AWS SDK で資格情報を管理するための新しい標準化された方法で説明しています。
目的は次のとおりです。
- boto、AWSCLI、およびその他の SDK による認証情報の共有を許可する
- ユーザープロファイルディレクトリにある単一のファイルにすべての構成を保持します
- 名前付きプロファイルの使用を許可する
- できるだけシンプルに保つ (例: 他のメソッドとの競合を避ける)
認証情報ファイルを作成する
ファイル~/.aws/credentials
(Mac/Linux) または%USERPROFILE%\.aws\credentials
(Windwos) を次のように作成します。
[default]
aws_access_key_id = AxxxA
aws_secret_access_key = Zxxxr
region = eu-west-1
[jekyl]
aws_access_key_id = AxxxA
aws_secret_access_key = Zxxxr
region = eu-west-1
[hyde]
aws_access_key_id = AxxxZ
aws_secret_access_key = CxxxZ
region = eu-west-1
これからは、次のようなコードを使用できます。
デフォルトのプロファイルを使用
import boto
con = boto.connect_s3()
AWS_PROFILE
envによって設定された明示的なプロファイルを使用します。変数
(これは私のお気に入りのオプションで、プロファイル名をコードから除外し、アプリケーションのデプロイ担当者に特定のプロファイルを選択する機会を与えます)
$ export AWS_PROFILE=jekyl
コードを以前と同じようにシンプルに保ちます。
import boto
con = boto.connect_s3()
コードで明示的なプロファイルを指定する
import boto
con = boto.connect_s3(profile_name="jekyl")
これは、通常行う必要があるすべてです
適切な資格情報を選択するためのロジックは、boto issue #2292で次のように説明されています。
優先度の高いものから低いものへの読み込み順序:
1.コードから直接渡す
キー/シークレットの環境変数
プロファイルの環境変数
共有資格情報ファイルの明示的プロファイル
共有認証情報ファイルのデフォルト プロファイル
構成ファイルの明示的なプロファイル
構成ファイルの資格情報セクション
コードから渡されたプロファイルは、環境変数の設定をオーバーライドします。
物事をクリーンでシンプルに保つために、古いスタイルのファイル (~/.aws/config
または など~/.boto
) を削除し、環境変数BOTO_CONFIG
が設定されている場合は設定を解除し、場合によってはそのような変数が指すファイルも削除することをお勧めします。
boto >=2.29.0 の場合はこれですべてです。
注: env.variable (のようにAWS_CONFIG_FILE
) によって構成ファイルの場所を制御しようとしないでください。期待どおりに動作しません。
boto 構成プロファイルを使用 (boto>=2.24.0)
以下の説明は、boto 2.29.0 以降にアップグレードできない方のためにのみここに残されています。
boto 2.24.0以降、と呼ばれる機能がありますprofile_name
ファイルに~/.boto
は既に [Credentials] セクションがあり、これはフォールバック オプションとして機能し、[profile ] セクションはさまざまなプロファイルに使用されます。
[Credentials]
aws_access_key_id = AxxxA
aws_secret_access_key = Zxxxr
[profile jekyl]
aws_access_key_id = AxxxA
aws_secret_access_key = Zxxxr
[profile hyde]
aws_access_key_id = AxxxZ
aws_secret_access_key = CxxxZ
次に、接続を作成するときに、次の方法を使用します。
import boto
con = boto.connect_s3(profile_name="jekyl")
この機能は boto 2.24.0 以降で利用できることに注意してください。
チュートリアルはこちらhttp://docs.pythonboto.org/en/latest/boto_config_tut.html?highlight=profile
キーリングの使用に関する注意事項もありますが、数年前から夢見ていたこのプロファイルの機能にまず慣れます。
構成ファイルを AWSCLI と共有する
AWSCLI は本当に素晴らしいツールになりました。設定ファイルのフォーマットはほぼ同じなので、以下のように使います。
- ファイルをAWSCLI
~/.aws/config
によって作成されたままにします (これがデフォルトの場所です)
- セクションをコピー
[default]
して名前を変更し[Credentials]
ます (同じ値を内部に残します)。
- 使用するプロファイルを追加します
- このファイル
BOTO_CONFIG
を指すように変数を設定します。~/.aws/config
これ~/.boto
は、次の内容の `~/.aws/config になります。
[default]
aws_access_key_id = AxxxA
aws_secret_access_key = Zxxxr
[Credentials]
aws_access_key_id = AxxxA
aws_secret_access_key = Zxxxr
[profile jekyl]
aws_access_key_id = AxxxA
aws_secret_access_key = Zxxxr
[profile hyde]
aws_access_key_id = AxxxZ
aws_secret_access_key = CxxxZ
このようにして、プロファイルを含む AWSCLI と boto の両方で共有されます。