LoginSignup
2
2

More than 1 year has passed since last update.

【AWS】AWS認証情報の設定方法/保管場所/優先順位を理解する。

Last updated at Posted at 2022-05-12

まえがき

なんとなくで使ってきたAWS認証情報設定周りについてちゃんと理解する。

AWS CLIインストール

ここからインストールする。

% aws --version
aws-cli/2.0.50 Python/3.7.4 Darwin/20.6.0 exe/x86_64

まずは aws configure で認証情報を設定してみる

とりあえず適当な値を入れてみよう。

% aws configure
AWS Access Key ID [None]: AccessKeyId
AWS Secret Access Key [None]: SecretAccesskey
Default region name [None]: Tokyo    
Default output format [None]: json

上記コマンドを実行すると、下記2ファイルが生成される。

ファイル 内容
CLI認証情報ファイル
~/.aws/credentials
[default]
aws_access_key_id = AccessKeyId
aws_secret_access_key = SecretAccesskey
CLI設定ファイル
~/.aws/config
[default]
region = Tokyo
output = json

各項目の説明

項目名 説明
aws_access_key_id IAMユーザー作成時に生成される"アクセスキーID"を設定する
aws_secret_access_key IAMユーザー作成時に生成される"シークレットアクセスキー"を設定する
region リクエストを送信するサーバーの AWS リージョン
output 出力形式

※IAMユーザー作成時に「アクセスキー・プログラムによるアクセス」を選択する。
image.png

設定方法

設定方法1: aws configureコマンド
設定方法2: 環境変数
設定方法3: CLI認証情報ファイル(~/.aws/credentials)CLI設定ファイル(~/.aws/config)を直接編集

設定方法1: aws configure コマンド

Defaultプロファイルを登録/編集する場合

// 初めてDefaultプロファイルを登録
% aws configure
AWS Access Key ID [None]: AccessKeyId
AWS Secret Access Key [None]: SecretAccesskey
Default region name [None]: Tokyo
Default output format [None]: json

// 登録済のDefaultプロファイルを編集する
% aws configure
AWS Access Key ID [****************eyId]: UPDATE
AWS Secret Access Key [****************skey]: UPDATE
Default region name [Tokyo]: UPDATE
Default output format [json]: UPDATE

新しくプロファイルを追加する場合


特定の項目だけ更新したい場合

aws configure set [aws_access_key_id | aws_secret_access_key | region | output] {更新する値}

特定の項目だけ取得したい場合

aws configure get [aws_access_key_id | aws_secret_access_key | region | output]

設定方法2: 環境変数

Linux/Mac

export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
export AWS_DEFAULT_REGION=us-west-2

Windows

setx AWS_ACCESS_KEY_ID AKIAIOSFODNN7EXAMPLE
setx AWS_SECRET_ACCESS_KEY wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
setx AWS_DEFAULT_REGION us-west-2

設定方法3: CLI認証情報ファイル(~/.aws/credentials)CLI設定ファイル(~/.aws/config)を直接編集

aws configureコマンドで設定する方が楽だが、テキストエディタで直接編集してもOK。

保管場所

保管場所1: 環境変数
保管場所2: CLI認証情報ファイル(~/.aws/credentials) CLI設定ファイル(~/.aws/config)

保管場所1: 環境変数

・AWS_ACCESS_KEY_ID
・AWS_SECRET_ACCESS_KEY
・AWS_DEFAULT_REGION
・AWS_DEFAULT_OUTPUT

保管場所2: CLI認証情報ファイル(~/.aws/credentials) CLI設定ファイル(~/.aws/config)

ファイル 設定されるもの
CLI認証情報ファイル
~/.aws/credentials
aws configure で指定された機密性の高い認証情報
・aws_access_key_id
・aws_secret_access_key
CLI設定ファイル
~/.aws/config
aws configure で指定された機密性の低い認証情報
・region
・output

優先順位

環境変数とファイルの両方設定されている場合、環境変数が優先される。
AWS CLIはバージョン1とバージョン2(最新)が存在し、今回はバージョン2(最新)における優先順位についてまとめる。

優先順位 設定方法 内容
1 コマンドラインオプション 他の場所の設定を上書きする。
コマンドラインで、--region、--output、および --profile をパラメータとして指定できる。
2 環境変数 -
3 CLI認証情報ファイル ~/.aws/crendentials
4 CLI設定ファイル ~/.aws/config

プロファイルで複数の認証情報を切り替える

複数の認証情報を管理したい場合、プロファイルを利用する。

アプリケーションに対して「DEV/TEST/STG/PROD」の4環境あるとして、
環境ごとのIAMユーザーとそれに紐づく認証情報を下記のように用意したとしよう。

IAMユーザー 認証情報(アクセスキーID) 認証情報(シークレットアクセスキー)
hoge_dev_user dev_access dev_secret
hoge_test_user test_access test_secret
hoge_stg_user stg_access stg_secret
hoge_prod_user prod_access prod_secret

この時、~./aws/credentialsにプロファイル(環境)ごとに認証情報を定義する。

[default] // デフォルト(DEV環境)
aws_access_key_id=dev_access
aws_secret_access_key=dev_secret

[test]  // TEST環境
aws_access_key_id=test_access
aws_secret_access_key=test_secret

[stg] // STG環境
aws_access_key_id=stg_access
aws_secret_access_key=stg_secret

[prod] // PROD環境
aws_access_key_id=prod_access
aws_secret_access_key=prod_secret

この設定がなされている状態で、awsコマンドを下記のように実行することでどの環境のIAMユーザーを利用するのかを切り替えることができる。

// DEV環境のS3バケット一覧が表示される
$ aws s3 ls
$ aws s3 ls --profile dev 

// TEST環境のS3バケット一覧が表示される
$ aws s3 ls --profile test

// STG環境のS3バケット一覧が表示される
$ aws s3 ls --profile stg

// PROD環境のS3バケット一覧が表示される
$ aws s3 ls --profile prod
2
2
0

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
  3. You can use dark theme
What you can do with signing up
2
2