search
LoginSignup
72
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

updated at

Organization

AWS CLIの認証設定をする際の注意

概要

AWS CLIを使うためにはAWSにアクセスするためのアクセスキー(アクセスキーIDとシークレットアクセスキー)が必要になります.本記事ではコマンド(configure)を使って認証情報を設定する時の注意事項について述べます.

結論

$ aws configure

じゃなくて

$ aws configure --profile [好きな名前]

を使おう.

調べたらよく出てくるやり方

まず認証情報と設定ファイルを作成する.

$ aws configure

次に,出てくる4項目を入力する.

AWS Access Key ID [None]: xxxxxxxxxx
AWS Secret Access Key [None]: xxxxxxxxxx
Default region name [None]: ap-northeast-1
Default output format [None]: json

AWS Access Key ID [None] と AWS Secret Access Key [None] には発行したアクセスキーを,
Default region name [None] にはデフォルトリージョンを,
Default output format [None] にはコマンド出力結果の表示形式(json,table,textのうちどれか)を,それぞれ指定します.

これで設定は終了です.

何がよくないか

上のコマンドによって~/.aws ディレクトリに作成された,認証情報(credentials)と設定ファイル(config)の内容を確認してみます.

credentials
[default]
aws_access_key_id = xxxxxxxxxx
aws_secret_access_key = xxxxxxxxxx
config
[default]
output = json
region = ap-northeast-1

・・・defaultってなに?って感じなんですが,これはオプションをつけずにAWS CLIコマンドを実行したときはこの認証情報と設定を使ってAWSにアクセスするよってことです.
まぁ一種類の情報,設定しか使わない人ならこれで問題ないんですが,複数の環境にアクセスする必要があり,IAMユーザーを使い分ける人は多いと思います.
別の環境にS3バケットを立てたかったのに,間違ってデフォルトの環境に立てちゃった!ってやっちゃいそうじゃないですか?僕はやる自信があります.
それを防ぐためにdefaultは設定せずに,必ずオプションをつけないとアクセスできないようにしたいんです.
具体的には,

$ aws configure --profile [好きな名前]

というコマンドを使うことで,

credentials
[好きな名前]
aws_access_key_id = xxxxxxxxxx
aws_secret_access_key = xxxxxxxxxx
config
[好きな名前]
output = json
region = ap-northeast-1

という内容のファイルが作成され,例えばS3のバケットを一覧表示するコマンドaws s3 lsだったら,

$ aws --profile [好きな名前] s3 ls

としないとエラーが出るようになるわけです.

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
What you can do with signing up
72
Help us understand the problem. What are the problem?