この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
本日、東京から札幌へ戻る横山です。 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 秋葉原が開催されますので、
札幌で働きたい方はぜひご検討ください。