下記の記事で”AWS CLI”に設定する認証情報(アクセスキー、シークレットキー、など)は、”AWS SSO”から取得していました。

認証情報(アクセスキー、シークレットキー、など)は、”AWS SSO”のユーザーポータルから取得できます。

“AWS SSO”から取得できる認証情報には、アクセスキー、シークレットキー、以外に下記のようにセッショントークン(AWS session token)も含まれており、それは期限付きの認証情報を意味します。

つまり上記の記事のように”AWS SSO”の認証情報は、一旦、”AWS CLI”に設定しても、期限がきたら利用できなくなり、改めて設定しなおす必要があります。
“AWS SSO”のセッション期間
「アクセス権限セット – AWS Single Sign-On」にセッション期間に関しては記載されています。
セッション期間は下記のように、AWSコンソール(AWS SSO)で確認と設定できます。


“AWS CLI”の認証に”AWS SSO”を利用
期限付きの認証情報を期限が切れるたびに設定するのは現実的ではないので、”AWS CLI”に下記のように”AWS SSO”の設定を行い、期限が切れたら”AWS SSO”のログインを実施する形にします。

“AWS SSO”の認証を使った”AWS CLI”の利用
認証情報の期限が切れていると、下記のように”AWS CLI”を利用したツールが利用できなくなります。
>git clone codecommit::ap-southeast-1://xxxxxxxx
...
The SSO session associated with this profile has expired or is otherwise invalid. To refresh this SSO session run aws sso login with the corresponding profile.Code language: JavaScript (javascript)
その場合、下記のように”aws sso login”コマンドを実行します。
>aws sso login
Attempting to automatically open the SSO authorization page in your default browser.
If the browser does not open or you wish to use a different device to authorize this request, open the following URL:
https://device.sso.ap-northeast-1.amazonaws.com/
Then enter the code:
WLGX-TFSB
Successully logged into Start URL: https://xxxxxxxx.awsapps.com/startCode language: JavaScript (javascript)
上記のコマンド実行中、下記のようにブラウザが起動し、”AWS SSO”にサインインする必要があります。



上記の”aws sso login”コマンド実行後、下記のように”AWS CLI”を用いたツールが利用できるようになります。
>git clone codecommit::ap-southeast-1://xxxxxxxx
Cloning into 'xxxxxxxx'...
remote: Counting objects: 14, done.
Unpacking objects: 100% (14/14), 1.04 KiB | 14.00 KiB/s, done.Code language: PHP (php)
最後に
巷の認証情報の流出問題を考えると、認証情報に期間があり期限切れすることは、非常に重要なことだと思っています。ただ、上述した通り、期限切れする場合は、利便性が下がってしまうので、”AWS CLI”に”AWS SSO”の設定をすることで、可能な限り利便性を上げることができます。



