今回は、ローカル端末から IAM Identity Center を介して AWS CLI を利用する環境について紹介していきます。
AWS CLI を実行するローカル端末を事前に容易します。今回は、almalinux をローカル端末として利用します。
AWS CLI のインストール
AWS CLI パッケージのダウンロード先ディレクトリを必要に応じて作成して、そのディレクトリへ移動しておきます。
[user@almalinux ~]$ sudo mkdir /tmp/aws
[sudo] password for user:
[user@almalinux ~]$
[user@almalinux ~]$ cd /tmp/aws/
[user@almalinux aws]$
AWS CLI バージョン2のパッケージをインターネット上からダウンロードしてきます。バージョン1 のパッケージもありますが、IAM Identity Center を介して AWS CLI を利用するにはバージョン2のパッケージである必要があります。
[user@almalinux aws]$ sudo curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 55.6M 100 55.6M 0 0 7848k 0 0:00:07 0:00:07 --:--:-- 9206k
[user@almalinux aws]$
ダウンロードしたパッケージファイルをunzip で解凍します。unzip がローカル端末にインストールされていない場合には、下記のようなエラーとなります。
[user@almalinux aws]$ sudo unzip awscliv2.zip
sudo: unzip: command not found
[user@almalinux aws]$
解凍ソフト(unzip)と圧縮ソフト(zip)をインストールします。
[user@almalinux aws]$ sudo yum install zip unzip
Last metadata expiration check: 1:39:36 ago on Mon Aug 7 01:24:51 2023.
Dependencies resolved.
================================================================================
Package Architecture Version Repository Size
================================================================================
Installing:
unzip x86_64 6.0-56.el9 baseos 180 k
zip x86_64 3.0-35.el9 baseos 263 k
Transaction Summary
================================================================================
Install 2 Packages
Total download size: 443 k
Installed size: 1.1 M
Is this ok [y/N]: y
ーー(省略)ーー
Running transaction
Preparing : 1/1
Installing : unzip-6.0-56.el9.x86_64 1/2
Installing : zip-3.0-35.el9.x86_64 2/2
Running scriptlet: zip-3.0-35.el9.x86_64 2/2
Verifying : unzip-6.0-56.el9.x86_64 1/2
Verifying : zip-3.0-35.el9.x86_64 2/2
Installed:
unzip-6.0-56.el9.x86_64 zip-3.0-35.el9.x86_64
Complete!
[user@almalinux aws]$
unzip をインストールしたら、先程ダウンロードしたパッケージファイルを解凍します。
[user@almalinux aws]$ sudo unzip awscliv2.zip
ーー(省略)ーー
inflating: aws/dist/docutils/writers/latex2e/default.tex
inflating: aws/dist/docutils/writers/latex2e/xelatex.tex
inflating: aws/dist/docutils/writers/latex2e/titlingpage.tex
inflating: aws/dist/docutils/writers/latex2e/titlepage.tex
inflating: aws/dist/docutils/writers/latex2e/docutils.sty
inflating: aws/dist/docutils/writers/odf_odt/styles.odt
inflating: aws/dist/docutils/writers/pep_html/pep.css
inflating: aws/dist/docutils/writers/pep_html/template.txt
[user@almalinux aws]$
インストールプログラムを実行します。実行すると、デフォルトですべてのファイルが /user/local/aws-cli にインストールされ、シンボリックリンクが /user/local/bin に作成されます。
[user@almalinux aws]$ sudo ./aws/install
You can now run: /usr/local/bin/aws --version
[user@almalinux aws]$
以下のコマンドを使用して、インストールを確認します。
[user@almalinux aws]$ sudo /usr/local/bin/aws --version
aws-cli/2.13.7 Python/3.11.4 Linux/5.14.0-284.18.1.el9_2.x86_64 exe/x86_64.almalinux.9 prompt/off
[user@almalinux aws]$
インストールが正常であれば、aws コマンドが実行できるようになります。
[user@almalinux aws]$ aws ls
usage: aws [options] <command> <subcommand> [<subcommand> ...] [parameters]
To see help text, you can run:
aws help
aws <command> help
aws <command> <subcommand> help
aws: error: argument command: Invalid choice, valid choices are:
accessanalyzer | account
acm | acm-pca
alexaforbusiness | amp
amplify | amplifybackend
ーー(省略)ーー
s3 | ddb
configure | deploy
configservice | opsworks-cm
history | cli-dev
help
[user@almalinux aws]$
自動認証更新によるトークンプロバイダーの設定
SSO トークンプロバイダー設定を使用して AWS IAM Identity Center でユーザーを認証するように AWS CLI を設定する方法について説明していきます。AWS SDK またはツールは、更新された認証トークンを自動的に取得できます。
ここでの設定を行わないと、AWS リソースへのアクセスはできません。
[user@almalinux aws]$ aws s3 ls
Unable to locate credentials. You can configure credentials by running "aws configure".
[user@almalinux aws]$
aws configure sso コマンドで SSO トークンプロバイダー設定を行っていきます。
SSO session name : 任意の名前
SSO strat URL: ログイン後に取得できる情報と一致させて下さい
SSO region:ログイン後に取得できる情報と一致させて下さい
SSO registration scopes:デフォルト(sso:account:access)
[user@almalinux aws]$ aws configure sso
SSO session name (Recommended): 任意の文字列
SSO start URL [None]: https://●●●●.awsapps.com/start#
SSO region [None]: ■■■■
SSO registration scopes [sso:account:access]:
上記設定を行った後に、Enterを押すと下記のように処理が進みます。
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://△△△△.amazonaws.com/
Then enter the code:
PJWH-SCFN
上記にあるURLにアクセスします。認証を要求されるので、上記発行されたコードを入力し [ Next ] ボタンを押します。
アクセスを許可するか確認を求めてくるため、[ Allow ] ボタンを押しアクセスを許可します。
どちらのAWSアカウントを適用するか確認してくるため、適用するAWS アカウントを選択し、Enter で実行します。
There are 2 AWS accounts available to you.
> ××××, test@test.com (753937710942)
○○○○, sample@test.com (958249634120)
次に AWS CLI のデフォルト値(リージョン、出力形式、プロファイル名)を確認してくるので、それぞれ入力し実行していきます。
・client Regein:クライアントのリージョンを指定(特に指定なければ SSO トークンプロバイダー設定で指定したリージョンと同じ)
・output format:json とします
・profile name:任意(デフォルトのままで良い)
Using the account ID 753937710942
The only role available to you is: *****
Using the role name "*****"
CLI default client Region [None]: ■■■■
CLI default output format [None]: json
CLI profile name [*****-753937710942]:
To use this profile, specify the profile name using --profile, as shown:
aws s3 ls --profile *****-753937710942
[user@almalinux aws]$
正常に行けば、AWS CLI での AWS リソースへのアクセスが可能となります。
[user@almalinux aws]$ aws s3 ls --profile Admin-Full-753937710942
[user@almalinux aws]$
ここまで設定してきた内容は、~/.aws/config に保存されます。
[user@almalinux aws]$ cat ~/.aws/config
[profile *****-753937710942]
sso_session = 任意の文字列
sso_account_id = 753937710942
sso_role_name = *****
region = ■■■■
output = json
[sso-session 任意の文字列]
sso_start_url = https://●●●●.awsapps.com/start#
sso_region = ■■■■
sso_registration_scopes = sso:account:access
[user@almalinux aws]$