モジュール 3: AWS CLI のセットアップ
チュートリアル
AWS CLI のセットアップ
このモジュールでは、AWS コマンドラインインターフェイス (CLI) を設定します
実行する内容
- ご使用のオペレーティングシステム用の AWS コマンドラインインターフェイス (AWS CLI) のインストール
- AWS アカウントにアクセスするための認証情報の設定
- 異なる AWS アカウントにアクセスするための複数のプロファイルの設定
実装
AWS CLI は AWS のサービスを管理するための統合ツールです。ダウンロードおよび設定用の単一のツールのみを使用して、コマンドラインから AWS の複数のサービスを制御し、スクリプトを使用してこれらを自動化することができます。
CLI を使用して AWS とやり取りするには、API コールを行う際に使用する認証情報を設定する必要があります。また、追加の認証情報を使用するか、IAM ロールを切り替えて、複数の AWS アカウントにアクセスするために複数のプロファイルを設定する方法についても説明します。
AWS CLI のインストール
オペレーティングシステム、またはコンテナを使用する設定に応じて、AWS CLI をインストールするさまざまな方法があります。AWS CLI v2 をインストールするには、「AWS CLI の最新バージョンのインストールまたは更新」を参照してください。
AWS CLI をインストールしたら、コマンドラインで aws--version を実行して、次の出力を表示できます (バージョンは異なる場合があります)。
aws --version
例えば、Windows 10 に AW CLI をインストールするときのレスポンスは次のようになります。
これで AWS CLI がインストールされ、認証情報を設定する準備が整いました。
AWS CLI の認証情報の設定
認証情報を設定するには、<aws configure sso> コマンドを使用して、このチュートリアルの前のモジュールで作成したユーザーの認証情報を含めます。
CLI で <aws configure sso> コマンドを実行すると、次の情報を入力するよう求められます。
- SSO セッション名: AWS CloudTrail ログに含まれる、このセッションに関連するエントリ用のセッションの名前を入力します。名前を入力しない場合は自動的に生成されます。このチュートリアルでは、<Test1> を使用します。
- SSO 開始 URL: IAM アイデンティティセンターの設定時に提供された AWS アクセスポータルの URL。
- SSO リージョン: このチュートリアルの例では、<us-east-1> を使用します。コマンドを自分で実行する場合は、IAM アイデンティティセンターを有効にしたリージョンを指定します。この情報は、AWS マネジメントコンソールの IAM アイデンティティセンターダッシュボードの [Settings summary] (設定の概要) で確認できます。
- SSO 登録スコープ: スコープは、さまざまなエンドポイントへのアクセスを認可します。このチュートリアルでは、最小スコープ <sso:account:access> を使用して、IAM アイデンティティセンターサービスから更新トークンを取得します。
<aws configure sso> コマンドを入力すると、ターミナルでこれらの各項目の入力を求めるプロンプトが表示されます。
aws configure sso
注: アカウントの開始 URL またはリージョンが不明な場合は、ルートユーザーとしてコンソールにサインインし、IAM アイデンティティセンターダッシュボードにアクセスしてください。リージョンと AWS アクセスポータルの URL は、[Settings summary] (設定の概要) に表示されます。
次のコード例は、このステージの CLI のコンテンツを示しています。
$ aws configure sso
SSO session name (Recommended): Test1
SSO start URL [None]: https://my-sso-portal.awsapps.com/start
SSO region [None]: us-east-1
SSO registration scopes [None]: sso:account:access
CLI は、デフォルトのブラウザで SSO 認証ページを自動的に開くことを試みて、IAM アイデンティティセンターのアカウントのためにサインインプロセスを開始します。
パスワード (および MFA 認証情報 (有効になっている場合)) を入力すると、データへのアクセスを許可するよう求められます。これにより、IAM アイデンティティセンターでの利用が認可されている AWS アカウントとロールを取得および表示するための許可が AWS CLI に付与されます。
AWS CLI は SDK for Python 上に構築されているため、許可メッセージには、botocore-client-Test1 などの botocore 名のバリエーションが含まれる場合があります。[Allow] (許可) を選択します。認証後、ウィンドウを閉じることができる旨が表示されます。
CLI が更新され、使用可能な AWS アカウントとロールが表示されます。この時点では AdministratorAccess ロールを持つ 1 つの AWS アカウントのみが設定されているため、それがサインインに使用するアカウントおよびロールとなります。CLI ウィンドウには次の行が表示されているはずです。
The only AWS account available to you is: 111122223333
Using the account ID 111122223333
The only role available to you is: AdministratorAccess
Using the role name "AdministratorAccess"
その後、デフォルトの出力形式を指定し、コマンドを送信するデフォルトの AWS リージョンを指定して、CLI でコマンドを実行する際にこのプロファイルを参照できるようにプロファイルの名前を指定するよう求められます。
推奨されるプロファイル名は、アカウント ID 番号、アンダースコア、ロール名をこの順番で並べたものですが、このチュートリアルでは、短いプロファイル名 (admin-1) を使用します。CLI ウィンドウには次の行が表示されているはずです。
To use this profile, specify the profile name using --profile, as shown:
aws s3 ls --profile admin-1
次に、<aws ec2 describe-vpcs> コマンドを実行して、設定が正しいかどうかを確認します。新しい AWS アカウントにはそれぞれデフォルトの VPC が設定されているため、AWS アカウントで他のサービスを設定しなくてもこのコマンドを実行できます。
aws ec2 describe-vpcs
CLI ウィンドウには次の情報が表示されているはずです。
これにより、AWS CLI が正しく設定されたことを確認できます。
この手順を実行することで、sso-session セクションと名前付きプロファイルを使用して AWS 設定ファイルが更新されました。
設定ファイルは、Linux または macOS を実行しているコンピュータの場合は ~/.aws/config にあり、Windows を実行しているコンピュータの場合は C:\Users\ USERNAME \.aws\config にあります。設定ファイルを開くと、次の 2 つのセクションが表示されます。
aws ec2 describe-vpcs --profile admin-1
{
"Vpcs": [
{
"CidrBlock": "10.0.0.0/16",
"DhcpOptionsId": "dopt-d12345",
"State": "available",
"VpcId": "vpc-0123456789abcdef",
"OwnerId": "111122223333",
"InstanceTenancy": "default",
............"CidrBlockAssociationSet": [
................{
....................."AssociationId": "vpc-cidr-assoc-38b060a751a39af8e",
....................."CidrBlock": "10.24.34.0/23",
....................."CidrBlockState": {
........................."State": "associated"
......................}
................}
............],
............"IsDefault": true
.........}
]
}
[profile admin-1]
sso_session = Test1
sso_account_id = 111122223333
sso_role_name = AdministratorAccess
region = us-east-1
output = json
[sso-session Test1]
sso_region = us-east-1
sso_start_url = https://my-sso-portal.awsapps.com/start
sso_registration_scopes = sso:account:access
これで、この sso-session とプロファイルを使用して、<aws sso login> コマンドを実行して認証情報をリクエストできます。
aws sso login
CLI ウィンドウには次の情報が表示されているはずです。
aws sso login -–profile admin-1
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.us-east1.amazonaws.com/
Then enter the code:
XXXX-XXXX
ブラウザウィンドウに移動し、データへのアクセスを許可します。CLI ウィンドウに戻ると、次の行を含むメッセージが表示されます。
Successfully logged into Start URL: https://my-sso-portal.awsapps.com/start
複数のプロファイルの設定 (オプション)
AWS アカウントにロールを追加し、組織に AWS アカウントをさらに追加する際に、それらのロールとアカウントのプロファイルを作成するには、上記の手順を繰り返します。
複雑さが増していく場合は、プロファイルを区別できるように、AWS アカウント ID とロール名を関連付けるプロファイル命名戦略を策定することをお勧めします。
まとめ
お疲れさまでした。 AWS CLI を設定し、名前付きプロファイルを設定する方法を学習しました。次のモジュールでは、クラウドベースの IDE である AWS Cloud9 の設定方法を学びます。