LoginSignup
55
48

More than 5 years have passed since last update.

~/.aws/credentialsファイルでプロファイルを切り替える

Last updated at Posted at 2016-03-15

AWSの認証情報についてググると良く以下の環境変数をセットせよと言う記事が出てきます。

  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY

これでも良いのですが、複数のAWSアカウントを使い分けていると面倒ですね。
というわけで、この辺のファイルのお話です。

~/.aws
├── config
└── credentials

configとcredentials

2つのファイルが有りますが、以下の様な使い分けです。

ファイル 用途
config AWS CLIを使う時のプロファイル別情報
credentials AWS SDK,AWS CLI を使う時の認証情報

以前は config,credentialsの両方にアクセスキー、シークレットキーが書かれていたのですが、最近の aws configureコマンドでは、上記のように認証情報はcredentialsファイルに寄せられるようになっています。

で、今回はSDKの方の話をしたいので~/.aws/credentialsの方にしぼります。

プロファイル

プロファイルはアクセスキー、シークレットキーのペアに名前をつけて管理する機能です。
上記classmethodさんの記事から引用させていただくと、

[default]
aws_access_key_id=AKIAIOSFODNN7EXAMPLE
aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

[test-user]
aws_access_key_id=AKIAI44QH8DHBEXAMPLE
aws_secret_access_key=je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY

こんな感じでdefault,test-userというのがプロファイル名になります。

defaultプロファイル

何も指定しない場合にはご想像の通りdefaultが使われます。

任意のプロファイルを指定する

AWS CLIの場合には全てのコマンドに--profileというオプションがあります。
SDKの場合にはどうするのでしょう?

1. ソースコード中でAWS関連のクラスをnewするときに指定

http://docs.aws.amazon.com/sdkforruby/api/Aws/EC2/Client.html
例えばRuby SDKであればClientクラスのコンストラクタに:profileがあります。

http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/EC2.html#constructor-property
しかし、Node.jsのコンストラクタには無かったりします。

あと、ソースコードにプロファイル名を埋め込んでしまうと、皆でプロファイル名を統一するという運用が必要になってきます。

2. 環境変数で指定する

AWS_PROFILEという環境変数にプロファイル名を指定することで、SDKが内部的に使用するプロファイルを切り替えることが出来ます。似たようなものでAWS_DEFAULT_PROFILEという環境変数もありますが、こちらはAWS CLI用みたいです。

使える環境変数については一覧があった気がするのですが・・・んー、出てこなくなった。
とりあえずこれで。
http://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-chap-getting-started.html#cli-environment

55
48
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
55
48