LoginSignup
10
7

More than 5 years have passed since last update.

AWS SDKで使われるクレデンシャル情報の検索優先順位

Last updated at Posted at 2016-03-07

AWS SDKを利用してプログラミングをする際、クレデンシャル情報(アクセスキーとシークレットキー)をハードコードしたりGitHubにpushしたりしちゃダメよ、というのは当然だと思うんですが、じゃあどこに格納しておくのが正解なんだっけ?と悩んだのでまとめておきます。

検索の優先順位について

AWS SDKを使ったプログラム中でアクセスキーなどが明示的に指定されていない場合、クレデンシャル情報は次の優先順位で検索されます。

  1. 環境変数AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY(.NET SDK以外)
  2. 設定ファイル~/.aws/credentials (Linux/Mac)または%USERPROFILE%\.aws\credentials (Windows)
  3. SDKごとの設定ファイル(後方互換性のため)
  4. SDKストア(.NET SDKのみ)
  5. (コードがEC2上で動いている場合のみ)インスタンスメタデータからクレデンシャル情報を取得

個人的には、2番の設定ファイルで統一するのが楽かなと思います。状況によっては5番は便利そうですね。

設定ファイルのフォーマット

2番の設定ファイルのフォーマットはいわゆるINI形式です。

[default]
aws_access_key_id = ACCESS_KEY
aws_secret_access_key = SECRET_KEY
aws_session_token = TOKEN

[Alice]
aws_access_key_id = Alice_access_key_ID
aws_secret_access_key = Alice_secret_access_key

[Bob]
aws_access_key_id = Bob_access_key_ID
aws_secret_access_key = Bob_secret_access_key

こんな風に記述できるので、必要に応じてプロファイル(ここではAliceBob)を使い分ければ複数のアクセスキーの管理も簡単です。また、このファイルは必ずリポジトリ外に置かれることになるので、どう間違ってもクレデンシャル情報をGitHubにpushするような事故は起きないはずです。

参考URL

本稿の内容は下記URLに書いてあることそのまんまです。

10
7
0

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
10
7