概要
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)の内容を確認してみます.
[default]
aws_access_key_id = xxxxxxxxxx
aws_secret_access_key = xxxxxxxxxx
[default]
output = json
region = ap-northeast-1
・・・defaultってなに?って感じなんですが,これはオプションをつけずにAWS CLIコマンドを実行したときはこの認証情報と設定を使ってAWSにアクセスするよってことです.
まぁ一種類の情報,設定しか使わない人ならこれで問題ないんですが,複数の環境にアクセスする必要があり,IAMユーザーを使い分ける人は多いと思います.
別の環境にS3バケットを立てたかったのに,間違ってデフォルトの環境に立てちゃった!ってやっちゃいそうじゃないですか?僕はやる自信があります.
それを防ぐためにdefaultは設定せずに,必ずオプションをつけないとアクセスできないようにしたいんです.
具体的には,
$ aws configure --profile [好きな名前]
というコマンドを使うことで,
[好きな名前]
aws_access_key_id = xxxxxxxxxx
aws_secret_access_key = xxxxxxxxxx
[好きな名前]
output = json
region = ap-northeast-1
という内容のファイルが作成され,例えばS3のバケットを一覧表示するコマンドaws s3 ls
だったら,
$ aws --profile [好きな名前] s3 ls
としないとエラーが出るようになるわけです.