見出し画像

【AWS備忘録】aws configureの知らなかったこと

おはようございますこぐまです。
久しぶりにAWS備忘録の記事です。

本日は「aws configure」コマンドをプロファイル付きで設定した場合の、気づいたことをまとめます。

結論1

aws configureをした場合に追記されるファイルは2つ。

.aws/credentials
  ⇒ アクセスキー、シークレットアクセスキーが格納される
.aws/config
  ⇒ リージョン、出力形式が格納される

結論2

aws configure --profile koguma として設定した場合、それぞれのファイルの
プロファイル名は以下のようになる。
 
.aws/credentials
プロファイル名・・[koguma]
 
.aws/config
プロファイル名・・[profile koguma]

メモ解説

aws configure を引数なしで普通に実行した場合、実行ユーザのホームディレクトリ配下に「.aws」というディレクトリと、その配下に「credentials」「config」という2つのファイルが作成(既にあれば追記)されます。
テスト環境で以下のように試してみます。

[ec2-user@ip-10-XX-XX-XXX ~]$ aws configure
AWS Access Key ID [None]: abcde             ← 適当にアクセスキーを入れる
AWS Secret Access Key [None]: abcde        ← 適当にシークレットを入れる
Default region name [None]: ap-northeast-1 ← 東京リージョンにしてみる
Default output format [None]: json

そうすると、以下のように2つのファイルにそれぞれ書き込まれます。
credentialsには、アクセスキーシークレットアクセスキーが、
configにはリージョンフォーマットがそれぞれ記載されています。
また、プロファイル名は【default】となっています。

[ec2-user@ip-10-XX-XX-XXX ~]$ cat .aws/credentials
[default]                     ← プロファイル名はdefault 
aws_access_key_id = abcde      ← 先ほど入力したアクセスキー
aws_secret_access_key = abcde ← 先ほど入力したシークレットアクセスキー


[ec2-user@ip-10-XX-XX-XXX ~]$ cat .aws/config
[default]               ← プロファイル名はdefault
output = json            ← 先ほど入力したフォーマット
region = ap-northeast-1 ← 先ほど入力したリージョン

このように、2つのファイルに分かれています。

次はプロファイル付きで設定をしてみます。例えば、 kogumaというプロファイル名で新しい設定をしたい場合は、

aws configure --profile koguma 

と実行します。やってみます。

[ec2-user@ip-10-XX-XX-XXX ~]$ aws configure --profile koguma
AWS Access Key ID [None]: 12345            ← 適当にアクセスキーを入れる
AWS Secret Access Key [None]: 12345      ← 適当にシークレットを入れる
Default region name [None]: ap-northeast-3  ← 大阪リージョンにしてみる
Default output format [None]: text      ← textにしてみる

さて、2つのファイルにどのように追記されているか見てみましょう。

[ec2-user@ip-10-XX-XX-XXX ~]$ cat .aws/credentials
[default]
aws_access_key_id = abcde
aws_secret_access_key = abcde
[koguma]                        ← プロファイル名はkoguma
aws_access_key_id = 12345       ← 先ほど入力したアクセスキー 
aws_secret_access_key = 12345   ← 先ほど入力したシークレットアクセスキー
 
[ec2-user@ip-10-XX-XX-XXX ~]$ cat .aws/config
[default]
output = json
region = ap-northeast-1
[profile koguma]               ← プロファイル名はprofile koguma
output = text                  ← 先ほど入力したフォーマット  
region = ap-northeast-3        ← 先ほど入力したリージョン

上記のような感じになります。
興味深い(というか紛らわしい?)のは、プロファイル名付きで登録する場合、configファイルのほうだけプロファイル名が【profile koguma】と
頭にprofileがつくことです。
でもdefaultの場合は、どちらのファイルもdefaultです(profile defaultとはならない)

【背景】

aws configureコマンドを利用しなくても、この2つのファイルは直接編集することができます。プロファイル付きの設定を直接入れる場合は、configファイルのほうは頭にprofileを付けないと、うまく設定が読み込まれません。
以下はプロファイル名「koguma」で直接追記する場合のダメな例です。

ダメな例
[ec2-user@ip-10-XX-XX-XXX ~]$ cat .aws/config
[koguma]                   ← これだとkogumaプロファイルとして読み込まれない。
output = text                  「profile koguma」としなくてはならない
region = ap-northeast-3       

一方credentialsファイルのほうは、プロファイル名そのままで大丈夫です。

[ec2-user@ip-10-XX-XX-XXX ~]$ cat .aws/credentials
[koguma]                        ← こちらはkogumaのままでOK
aws_access_key_id = 12345        
aws_secret_access_key = 12345   

configファイルにはリージョンが記載されているので、基本的に東京リージョンだけで実施する場合は、あまり影響がないのかもしれません。

私はデフォルト以外のプロファイルを作成し、大阪リージョンを設定していたのですが、プロファイル指定しているにもかかわらずなぜか東京リージョンのほうでコマンドが実施されていたので、なぜかなあと思って調べて気づいた次第です。

読んで下さってありがとうございました!

この記事が気に入ったらサポートをしてみませんか?