はじめに
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
ファイルに書かれているので、テキストエディタで削除できます。