AWS CLIのクレデンシャル(認証情報)の管理と切り替え

AWS CLIで、作業内容に合わせてIAMユーザを複数利用したい時があるかと思います。

例えばS3のバケット操作のみ許可されたIAMユーザや、Terraform実行用に複数のサービスの操作権限が付与されたユーザを用意したり、要所でクレデンシャルの情報を切り替えたりしたいわけです。

認証情報の管理と切り替え方法をメモします。

defaultの認証情報を設定

aws configureコマンドを実行し、アクセスキーとシークレットキー、その他必要な情報を入力することで設定ができます。コマンド実行後、ホームディレクトリの.awsディレクトリにクレデンシャルの情報が記録されます。

# ~/.aws/credentialsの中身

[default]
aws_access_key_id = xxxxxxxxxx
aws_secret_access_key = xxxxxxxxxx
# ~/.aws/configの中身

[default]
output = json
region = ap-northeast-1

profileを指定して複数の認証情報を管理

aws configureコマンドに–profileオプションをつけると、指定した名前で認証情報を設定することができます。

aws configure --profile hogehoge

~/.aws/credentialsは下記のようになります。

[default]
aws_access_key_id = xxxxxxxxxx
aws_secret_access_key = xxxxxxxxxx

[hogehoge]
aws_access_key_id = xxxxxxxxxx
aws_secret_access_key = xxxxxxxxxx

[mogumogu]
aws_access_key_id = xxxxxxxxxx
aws_secret_access_key = xxxxxxxxxx

認証情報を指定する場合は下記のように、–profileオプションとプロファイル名を引数に渡します。

aws cli --profile hogehoge s3 ls

設定ファイルを直接編集して複数の認証上を管理

~/.aws/credentials~/.aws/configファイルを直接編集して切り替えることもできます。

例えば下記のように複数の情報を追記しておき、コメントアウト・インをしてクレデンシャルを切り替えます。

[default]
# terraform-user
aws_access_key_id = xxxxxxxxxx
aws_secret_access_key = xxxxxxxxxx

# S3 ls only
# aws_access_key_id = xxxxxxxxxx
# aws_secret_access_key = xxxxxxxxxx

# god-user
# aws_access_key_id = xxxxxxxxxx
# aws_secret_access_key = xxxxxxxxxx

aws cliコマンドに–profileオプションを指定したくない、もしくはなんらかの事情で指定できない時に、応急処置的な方法として使えるかと思います。

まとめ

defaultのみで良い場合はaws configureコマンド。複数の認証情報を使い分けたい場合はaws configure --profileが使えます。

状況に応じて~/.aws/credentialsを直接書き換えるのもありですが、特別な事情がない場合はaws configureコマンドで設定するのが良いかなと思います。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください