Help us understand the problem. What is going on with this article?

aws-cliにて、複数の認証情報を使い分けたい場合の設定方法

More than 1 year has passed since last update.

aws-cliのprofile機能

複数アカウントを利用する際は危険

複数案件をこなしていると、aws-cliにて複数のアカウント情報を取り扱うことが出てくると思います。

その際に、各認証情報正確に区別する必要があり、間違って別の認証情報を使ってAWSサービスを操作してしまうと大問題になってしまします。

cliでの基本的な認証処理

aws-cliを使う場合、ホーム直下の.awsディレクトリにある認証情報は.configファイルと.creadincailsファイルに記載します。

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

上記ファイルは、aws configure コマンドで作成するも良いですし、物理的にファイルを作成してもどちらでも問題ありません。

実行ユーザー~/.aws/内の上記ファイルを利用して認証処理を行います。

記載内容は以下が基本です。

.config
[default]
output = json
region = {リージョン}
.credentials
[default]
aws_access_key_id = {アクセスキー}
aws_secret_access_key = {シークレットキー}

認証情報の複数管理方法

aws-cliにはこのようなケースを考えて、profile機能があります。

profile機能を知らなかった僕

以下のように各ファイルを管理し、

directory
~
└── .aws
    ├── .config.hoge
    ├── .credentials.hoge
    ├── .config.fuga
    └── .credentials.fuga

cpコマンドで都度コピーし

command
cp ~/.aws/.config.hoge ~/.aws/.config
cp ~/.aws/.credentials.hoge ~/.aws/.credentials

作業が終わったらrmコマンドで消していました。。。。(お恥ずかしい・・・orz)

command
rm  ~/.aws/.config
rm  ~/.aws/.credentials

profile機能を知った僕

ディレクトリとしては、各ファイル(config/credentials)をそれぞれ一つずつ管理します。

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

その上で、以下のようにセクションを各認証情報毎に分けて、各情報を記述します。

.config
[profile hoge]
output = json
region = {リージョン}

[profile fuga]
output = json
region = {リージョン}

[default]
output = json
region = {リージョン}

.credentials
[hoge]
aws_access_key_id = {アクセスキー}
aws_secret_access_key = {シークレットキー}

[fuga]
aws_access_key_id = {アクセスキー}
aws_secret_access_key = {シークレットキー}

[default]
aws_access_key_id = {アクセスキー}
aws_secret_access_key = {シークレットキー}

上記のように.configでは[profile {profile}].credentialsでは[{profile}]のようにセクション(profile)指定します。

その上で、コマンド実行時

command
aws ~~~ --profile ${profile}

--profileオプションでセクション(profile)を指定することで、各ファイルに指定したセクション(profile)毎の設定を利用して操作をしてくれます。

しゅごい。

ちなみに、--profileオプションをつけ忘れると、[default]セクション(profile)の設定が利用されるので、複数の認証情報を扱い場合はdefaultセクション指定せず必ず--profileで意図的に指定する運用にした方が良いかと思われます!

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away