メインコンテンツまでスキップ

AWS CLI

AWS CLI を使うと AWS 上のリソースをコマンドラインで操作することができます。

IAM Identity Center の設定ができていない場合は、IAM Identity Center で作業用のユーザーを管理する を参考にして設定を終わらせてください。

AWS CLI のインストール

AWS CLIの最新バージョンのインストールまたは更新 - AWS Command Line Interface を見ながらインストールしてください。

AWS CLI のプロファイル設定

IAM Identity Center でログインIDを管理している場合、 AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY などの情報をローカルに保管せずに AWS CLI (aws コマンド) を利用することができます(セキュリティ的にも良いことです)。その代わり AWS CLI を利用する前に aws sso login をする必要があります。
以下を参考にして aws sso login ができる環境を整えてください。

aws configure sso --profile プロファイル名

例: admin という名前のプロファイルを設定したい場合

aws configure sso --profile admin

1. SSOログインの設定

aws configure sso を実行すると以下が一つずつ表示されます。

SSO session name (Recommended): admin
SSO start URL [None]: https://d-123456789c.awsapps.com/start#
SSO region [None]: ap-northeast-1
SSO registration scopes [sso:account:access]:
  • SSO session name (Recommended):
    • SSOログイン設定の名前です。
    • わかりやすい名前にしてください。上の例では admin としています。(詳しくは付録参照)
  • SSO start URL [None]:
    • 「AWS アクセスポータルの URL」を指定してください。
    • IAM Identity Center のダッシュボードから確認できます。
  • SSO region [None]:
    • IAM Identity Center を用意したリージョンと同じリージョンを指定します。
  • SSO registration scopes [sso:account:access]:
    • SSO セッションのアクセススコープ(認可の範囲)です。
    • デフォルトの sso:account:access のままで良いので、何も入力せず Enter を押してください。

2. 認証と認可

2.1. 認証

IAM Identity Center で用意したアカウントでログインしてください。

2-1_authentication.png

2.2. 認可

画面に従って確認を進めてください。

Authorization Image 1
Authorization Client Image 2
Authorization Client Image 3

3. プロファイルの設定

認証と認可が終わった後、ターミナルを確認するとプロファイルの設定ができるようになっています。

There are 3 roles available to you.
Using the role name "AdministratorAccess"
CLI default client Region [None]: ap-northeast-1
CLI default output format [None]: json
  • There are 3 roles available to you.
    • 利用したい許可セットを指定します。
    • 以下の様に、↑↓方向キーで選べます。
      IAM Identity Center で用意した許可セットが選択できます
      profile-settings profile-settings
  • Using the role name "AdministratorAccess"
    • 選択後以下の様に選択した許可セットが表示されます。
  • CLI default client Region [None]:
    • AWS CLI で --region オプションを指定しない場合のデフォルトリージョンを指定します
    • 主に東京リージョンを使用する場合は、 ap-northeast-1 を指定しておくことをお勧めします。
  • CLI default output format [None]:
    • AWS CLI で取得した結果をどの様なフォーマットで出力するか指定できます
    • 特にこだわりがなければ json をお勧めします。

お疲れ様でした!以上で設定完了です。

設定したプロファイル名の一覧を表示

実行すると設定済みのプロファイル名一覧が表示されます

aws configure list-profiles

AWS CLI で SSO ログイン

aws sso login --profile プロファイル名

例: admin のプロファイルで AWS CLI を操作できるようにしたい場合

aws sso login --profile admin

--profile を指定せずに aws コマンドを利用する方法

環境変数 AWS_PROFILE を設定しておくと、--profile の指定をせずに aws コマンドを利用できます。

例: admin のプロファイルで常に AWS CLI を操作できるようにしたい場合

export AWS_PROFILE=admin
aws sso login

上記は起動しているシェルの中だけ有効ですが、毎回 exprot を指定するのが面倒な場合は、使っているシェルのrcファイルに書いておくと便利です。

bashの場合

echo 'export AWS_PROFILE=admin' >> ~/.bashrc
source ~/.bashrc

zsh の場合

echo 'export AWS_PROFILE=admin' >> ~/.zshrc
source ~/.zshrc

AWS Account ID を表示する

例: JSON で表示

aws sts get-caller-identity

例: AWS Account ID だけを表示

aws sts get-caller-identity --query 'Account' --output text
応用例: AWS Account ID を変数に入れて利用する

以下でシェル変数 aws_account_id に AWS Account ID を入れます

aws_account_id=$(aws sts get-caller-identity --query="Account" --output text)

以下のように参照できます

echo ${aws_account_id}

aws コマンドの中で arn (Amazon Resource Name) を指定するシーンなどに活用できます。

付録

~/.aws/config の中身について

cat ~/.aws/config

上記をすると以下の様な内容が確認できます。
(複数のプロファイルを設定している場合は、以下のセットが複数あります)

[profile AdministratorAccess]
sso_session = admin
sso_account_id = 123456789012
sso_role_name = AdministratorAccess
region = ap-northeast-1

[sso-session admin]
sso_start_url = https://d-123456789c.awsapps.com/start#
sso_region = ap-northeast-1
sso_registration_scopes = sso:account:access

それぞれ次の通りとなります。

[profile プロファイル名]

AWS CLI の --profile プロファイル名を指定すると使用される設定が記述されています

設定項目説明
sso_session使用する SSO セッションの名前。
[sso-session] セクションで定義されたセッション設定を参照する。
sso_account_idアクセス対象の AWS アカウント ID。
SSO を通じてアクセスしたい AWS アカウントの ID を指定する。
sso_role_name引き受ける許可セットの名前。
アクセス対象のアカウントで引き受けるIAM Identity Center の許可セットを指定する。
region操作対象の AWS リージョン。
このプロファイルを使用して AWS CLI 経由で操作を行う際のデフォルトリージョンを指定する。

[sso-session SSOセッション名]

SSOログインをするための情報が記載されています。
[sso-session SSOセッション名] の 「SSOセッション名」の部分は、aws configure sso の「SSO session name (Recommended):」で設定した値です。

設定項目説明
sso_start_urlAWS SSO のログインページの URL。
ユーザーが認証プロセスを開始するためにアクセスする URL を指定。
sso_regionAWS SSO サービスを利用するリージョン。
SSO セッションを開始するために利用される AWS リージョンを指定。
sso_registration_scopesSSO セッションのアクセススコープ。
どのような種類のアクセスがこのセッションに許可されるかを定義。