AWS CLIのCredentialの設定に嵌ったお話
本日、東京から札幌へ戻る横山です。 AWS CLI使えるようになるまでのメモです。
前提
aws-cliを使うためのCredentialが設定されていないEC2がある。
$ aws ec2 describe-availability-zones Unable to locate credentials. You can configure credentials by running "aws configure". $ aws --version aws-cli/1.5.0 Python/2.6.9 Linux/3.14.20-20.44.amzn1.x86_64
準備
今回はIAMユーザ作り、access keyを作るところから始めていきます。 IAMのUsers画面を開き、Create New Usersからユーザを作っていきます。
次に、適当なユーザ名をつけて、Access Keyを作ってもらうために、 Generate an access key for each userにチェックがついているか確認して Createを選択し、Userを作成します。
Show User Security Credentialsの文字をクリックし、以下の情報をメモっておきます。 メモるのが面倒という場合右下にあるDownload CredentialsをクリックするとCSVファイル形式でダウンロードできます。
- Access Key ID
- Secret Access Key
メモが終わりましたら、User Policyを設定します。 IAMのUsers画面に戻り、先ほど作成したユーザを選択します。
項目の Permissions に Attach User Policy というボタンがあるのでクリックします。
今回は簡単にSelect Policy TemplateのPower User Accessを選択します。
Pollicy Name、Policy Documentの中身を確認したら、Apply Policyをクリックして設定完了です。
Credential設定
さて、ここからが本題となります。 前提にも書きましたように、AWS CLIのCredentialを通して行きたいと思います。 その時使うコマンドが aws configure です。 これの通りに実行すると ~/.aws/config と ~/.aws/credentials が作られる…はず。 …タイトルから察するにうまく行かなかったのです。
$ aws configure AWS Access Key ID [None]: AKIA**************** AWS Secret Access Key [None]: **************************************** Default region name [None]: ap-northeast-1 Default output format [None]: json $ ls -l ~/.aws 合計 4 -rw------- 1 ec2-user ec2-user 48 1月 30 05:21 config
~/.aws/credentials が作られません。 これ何度やっても同じでした。 ですので、ここは1個ずつ設定していこうと思います。
まずは、aws_access_key
$ aws configure set aws_access_key_id AKIA**************** $ ls -l ~/.aws ls -l ~/.aws/ 合計 8 -rw------- 1 ec2-user ec2-user 48 1月 30 05:21 config -rw------- 1 ec2-user ec2-user 51 1月 30 05:25 credential
この方法ですときちんと、ファイルが作られました。 続いて、aws_secret_access_key。
$ aws configure set aws_secret_access_key ****************************************
この手順で作成できます。
確認
$ cat ~/.aws/credentials [default] aws_access_key_id = AKIA**************** aws_secret_access_key = ****************************************
$ aws ec2 describe-availability-zones { "AvailabilityZones": [ { "State": "available", "RegionName": "ap-northeast-1", "Messages": [], "ZoneName": "ap-northeast-1a" }, { "State": "available", "RegionName": "ap-northeast-1", "Messages": [], "ZoneName": "ap-northeast-1c" } ] }
おまけ
これの検証やってるうちに一つ気づきました
$ ls ~
「~」ってディレクトリができてました。 …嫌な予感がしますね。 階層を潜って行きましょう
$ cd "~" $ pwd /home/ec2-user/~ $ ls -a . .. .aws
ここまで来るともう落ちが分かりますよね。
$ cd .aws $ pwd /home/ec2-user/~/.aws $ ls -l 合計 4 -rw------- 1 ec2-user ec2-user 116 1月 30 05:21 credentials
…まさかまさか。 というわけで手順の確認作業
$ cd $ pwd /home/ec2-user $ rm -rf "~" $ ls $ aws configure $ aws configure AWS Access Key ID [None]: hoge AWS Secret Access Key [None]: hoge Default region name [ap-northeast-1]: Default output format : $ ls ~ $ cat \~/.aws/credentials [default] aws_access_key_id = hoge aws_secret_access_key = hoge
はい、確定(だと思います)。
まとめ
aws-cliのCredentialの設定が、案外嵌りそうだと思ったのでまとめました。
aws-cli/1.5.0 からバージョンが上がれば改善されてるかもしれません。
あと、近日中に、札幌で働きたいITエンジニアの情報交換会 in 秋葉原が開催されますので、
札幌で働きたい方はぜひご検討ください。