【AWS】aws cliの設定方法
はじめに
aws cli の初期セットアップ方法の記事です。
AWS がちょっと気になる、aws cli で AWS のリソースにアクセスしてみたい。
そんな方への入門記事になります。
この記事でわかること
この記事を読む上での前提条件
aws cli のインストール
まずは手元のローカルマシンに aws cli をインストールします。
ドキュメントは以下で、ここはドキュメント内記載のコマンドを各 PC の OS 環境に合わせて実行すれば OK です。
僕は Mac ユーザなので以下のコマンドでインストールしました。
$ curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg"
$ sudo installer -pkg ./AWSCLIV2.pkg -target /
インストールが完了したら以下のコマンドで確認します。
$ aws --version
# 実行結果
aws-cli/2.7.2 Python/3.9.11 Darwin/21.6.0 exe/x86_64 prompt/off
接続情報の設定
cli をどこの AWS 環境に実行するかの設定を行います。
まずは以下のコマンドで初期の接続情報を確認してみます。
$ aws configure list
# 実行結果
Name Value Type Location
---- ----- ---- --------
profile <not set> None None
access_key <not set> None None
secret_key <not set> None None
region <not set> None None
初期値は何もセットされていないことが確認できます。
access_key
と secret_key
という項目がありますが、こちらが cli から AWS リソースにアクセスするときに使用するアクセスキー情報になりますのでこちらを発行していきます。
アクセスキーの発行
AWS には Email アドレスとパスワードでログインする ルートユーザ
とアカウント ID と AWS 環境から作成した IAMユーザ
の情報でログインする 2 パターンが存在します。
ルートユーザの場合は右上のアカウント情報から セキュリティ認証情報
をクリックし
遷移した IAM の管理画面で アクセスキーを作成
ボタンをクリックします
IAM ユーザの場合は ユーザ
タブから セキュリティ認証情報
タブを選択し アクセスキーを作成
ボタンをクリックします
後続処理は共通です。
コマンドラインインターフェース(CLI)
を選択し、 次へ
ボタンをクリック
任意で説明を入力し、アクセスキーを作成
ボタンをクリック
.csvファイルをダウンロード
ボタンをクリックし、完了
ボタンをクリックして終了です。
※CSV ファイルはここでしか取得できないのでダウンロードを忘れた場合は再度作成し直します。
ダウンロードしてきた CSV は以下のフォーマットになっていることが確認できます。
Access key ID,Secret access key
xxxxxxxxxxxxx,yyyyyyyyyyyyyyyyy
先ほど、aws configure list
で確認した access_key
が Access key ID
に、secret_key
が Secret access key
に対応づく形になります。
アクセスキーを aws cli の認証情報と紐付ける
先ほど作成したアクセスキー情報を設定すればコマンドは実行できるのですが、ここで profile
と default
の概念を理解しながら設定を行ってみましょう。
aws cli にアクセスキー情報を設定するときには以下のコマンドを使用します。
$ aws configure
対話型で入力を求められますので各情報を以下に沿って入力します。
AWS Access Key ID [None]: csv の Access key ID
# Enter
AWS Secret Access Key [None]: csv の Secret access key
# Enter
Default region name [None]: 未入力
# Enter
Default output format [None]: 未入力
# Enter
このコマンドが完了すると ~/.aws/credentials
に情報が記載されます。
$ cat ~/.aws/credentials
# 実行結果
[default]
aws_access_key_id = *****
aws_secret_access_key = *****
aws configure
に沿って入力した内容が反映され [default]
という名前でグルーピングされていることが確認できます。
また、こちらの情報は以下のコマンドでも確認できます。
$ aws configure list
次に aws configure
は --profile
オプションを追加して 名前つきのプロファイル を設定することができます。
以下のコマンドを実行し、先ほど同様に対話型の入力を行い実行結果を確認します。
$ aws configure --profile hoge
$ cat ~/.aws/credentials
# 実行結果
[default]
aws_access_key_id = *****
aws_secret_access_key = *****
[hoge]
aws_access_key_id = *****
aws_secret_access_key = *****
[hoge]
という名前でグルーピングされた情報が追加されたことが確認できます。
また、こちらの情報は以下のコマンドでも確認できます。
$ aws configure list --profile hoge
以下のコマンドでは現在設定されているプロフィール名を一覧で取得することもできます。
$ aws configure list-profiles
これが default
と profile
でのアクセスキー設定方法の違いになります。
この --profile
オプションをつけるとつけないで何が違うのかを説明します。
まず、profile
ですが、このオプションは aws cli コマンドの全てに適用されるグローバルオプションになります。
使い道としては、複数の AWS 環境を管理していて環境ごと違うアクセスキー情報を切り替えたいときに使用されます。
例えば、以下のアクセスキー情報を保持していたとします。
$ cat ~/.aws/credentials
# 実行結果
[aws-env1-user]
aws_access_key_id = www
aws_secret_access_key = xxx
[aws-env2-user]
aws_access_key_id = yyy
aws_secret_access_key = zzz
環境ごとの S3 バケットの一覧を確認したいときに以下のコマンドで確認ができます。
$ aws s3 ls --profile aws-env1-user
$ aws s3 ls --profile aws-env2-user
※ちなみにこの credentials
情報は aws configure
コマンドから設定せず直接編集しても OK です
--profile
オプションをつけなかった場合は以下の結果になります。
$ aws s3 ls
# 実行結果
Unable to locate credentials. You can configure credentials by running "aws configure".
認証情報がないとのエラーが発生します。--profile
オプションによりどの AWS 環境に接続するかを指定していないためのエラーです。
では、以下のアクセスキー情報のように default
が存在した場合はどうなるかです。
$ cat ~/.aws/credentials
# 実行結果
[default]
aws_access_key_id = aaa
aws_secret_access_key = bbb
[aws-env1-user]
aws_access_key_id = www
aws_secret_access_key = xxx
[aws-env2-user]
aws_access_key_id = yyy
aws_secret_access_key = zzz
$ aws s3 ls
# 実行結果
2022-11-06 22:20:42 bucket-name
エラーが発生せずに default
のアクセスキー情報を発行した AWS 環境の S3 のバケットリストが取得できます。
以上から、プロフィール先を明示的に指定しないときに default
プロファイルが存在する場合はそちらに接続しに行きますが、ない場合はエラーを返すという挙動が確認できたかと思います。
ここを理解しとくのは結構重要です。今回のように ls
コマンドを実行するレベルならまだしも cp
コマンドを実行したときに --profile
の指定を忘れて違う環境にデータをアップロードしてしまった、データを書き換えてしまったなどが発生すると中々の事故につながる恐れがあります。
まとめると aws configure
を実行するときは基本 --profile
オプションをつけて名前でグルーピングしておき、default
は使用しない、オプションをつけ忘れてもエラーになるように設定しておいた方が無難かと思います。
MFA の設定がある場合
MFA 設定があるルートユーザないし IAM アカウントで aws cli を実行するときは一時的なアクセス情報を取得して実行する必要があります。
詳細は以下の記事を参考にしてください。
さいごに
さいごまで読んでいただきありがとうございます。
以下今回のまとめです。
aws cli を実行するまでの手順と注意点。
- cli のインストール
- 対象の AWS 環境のユーザからアクセスキー情報を作成する
-
aws configure
でアクセスキー情報を設定する -
aws configure
は--profile
オプションを使用し名前でグルーピングできる -
--profile
オプションを付与しなかった場合default
として作成される - aws cli のコマンド実行時に
--profile
を指定しないでdefault
が存在するとそこに接続しに行く - 事故る可能性があるので基本的に
default
は使用しない
間違いの指摘やリクエストなどありましたら加筆していきたので是非、ご意見をいただけたらと思います。
それではまた次の記事でお会いしましょう。
Discussion