はじめに
AWS CLIを認証する方法は複数あり、結局どのようにすれば良いのか迷ってしまいました。ここでは、公式が推奨している方法をまとめます。
AWS CLIのインストール
Linux、MacOS、Windowsでインストール方法が異なります。公式ドキュメントの通りにインストールするのが確実です。
IAM Identity Centerを使ったログイン
IAM Identity Centerは組織がユーザのアクセスを一元管理するサービスです。
ポータルサイトのURL(https://xxx.awsapps.com/start/のようなURL)にログインします。
アカウントが発行されていないなら、管理者に依頼するか、以下のドキュメントにしたがってIAM Identity Centerを導入する必要があります。
認証方法
SSOトークンを使った認証が推奨されています。
SSOとはシングルサインオン(Single Sign On)のことで、ユーザ認証を一度だけ行うことで複数のサービスを利用できる機能のことです。
IAM Identity Centerの情報取得
認証に必要な情報を事前に取得しておきます。
まず、AWS access portalにログインして、Access keysのリンクをクリックしてください。

クリックしたら以下のような画面になるので、自分が使っているOSを選んで、SSO start URLとSSO Regionをコピーします。
認証のときに、この2つを使います。

コマンドによる認証
ポータルサイトにログインしたら、ローカルのターミナル等で次のコマンドを入力します。
$ aws configure sso
設定が必要になるので、以下の項目のように入力していきます。
| 項目 | 入力 |
|---|---|
| SSO session name (Recommended) | 自由に設定 |
| SSO start URL | 前節でコピーしたURL |
| SSO region | 前節でコピーしたURL |
| SSO registration scopes |
sso:account:accessと入力 |
入力するとブラウザが起動して認証を求められます。
認証が終わると再びターミナルに戻り、残りの項目を入力していきます。
| 項目 | 入力 |
|---|---|
| There are n AWS accounts available to you. | 使用するアカウントの選択 |
| There are n roles available to you. | 使用するロールを選択 |
| CLI default client Region |
リージョン一覧から選んで入力(例えば東京はap-northeast-1) |
| CLI default output format |
json yaml yaml-stream text tableから選択 |
| CLI profile name | 設定の名前を自由に入力 |
以上で設定は完了となります。正しく設定できたかどうかは、以下のコマンドを入力すると分かります。
$ aws s3 ls --profile [CLI profile name]
セッションが切れたら
AWSではセッションの期間はデフォルトで1時間に設定されています。
新しいアクセス権限セットを作成すると、デフォルトでセッションの継続時間が 1 時間 (秒単位) に設定されます。セッション時間は、最短で 1 時間、最長で 12 時間まで設定できます。
セッションの期間を変更する場合は、セッション期間の設定にしたがいましょう。
セッション期間が切れると以下のようなメッセージが出力されます。
$ aws s3 ls --profile [CLI profile name]
> Error when retrieving token from sso: Token has expired and refresh failed
このときには以下のコマンドで再認証できます。
$ aws sso login --profile [CLI profile name]
プロファイル名を忘れてしまったとき
ログインのときにはプロファイル名が必要ですが、忘れてしまった場合でも、以下のコマンドで設定したプロファイルの一覧が確認できます。
$ aws configure list-profiles
設定したプロファイルを削除するとき
設定情報は~/.aws/configファイルに書かれているので、テキストエディタで削除できます。