コンテンツにスキップ

af-aws-exec

AWS プロファイル 1 つの短命の資格情報で、コマンドを 1 つ実行します。資格情報はそのコマンドにだけ渡されます。 使いかたの流れは AWS SSO を使う にあります。

ターミナルウィンドウ
af-aws-exec --profile <名前> [--account <ID>] [--region <リージョン>] [--login | --no-login]
[--keep-aws-config] [-q] -- <コマンド> [引数...]
af-aws-exec --list
af-aws-exec --help
af-aws-exec --version

-- より後ろが、実行するコマンドです。--login と --no-login は片方だけ指定してください。両方を指定すると、後ろのものが有効になります。

オプション 意味
--profile <名前> 使うプロファイル。必須です。名前は --list で確かめられます
--account <ID> プロファイルのアカウントがこの ID でなければ、何も実行せずに止めます。設定画面のプロファイル以外(自分で ~/.aws に定義したもの)では必須です
--region <リージョン> コマンドに渡すリージョン。決まり方は リージョン
--login ログインが使えないとき、この端末で device-code のログインを始めます
--no-login ログインを求めず、ログイン用のコマンドを表示して終了コード 3 で終わります
--keep-aws-config 自分の ~/.aws のファイルと AWS_ENDPOINT_URL* の設定を、コマンドにもそのまま渡します
-q 実行する身元の行を表示しません
--list 設定からプロファイルを読み直して、使える名前を一覧にします
-h, --help ヘルプを表示します
--version バージョンを表示します
コード 意味
コマンドのもの 実行できたときは、コマンド自身の終了コードをそのまま返します
1 そのほかの拒否・失敗(アカウントが --account と違う、など)
2 使い方の誤り
3 ログインが必要なのに始めなかった(--no-login、Console で時間内に承認されなかった、待っている間に Ctrl-C)
4 「使用前に確認」のプロファイルで、Console で拒否された・時間内に答えがなかった・Agent Fleet のセッションの外から実行された

終了コード 4 のとき、依頼は Console に残っています。許可してから、もう一度実行してください。

コマンドを実行する前に、標準エラーに次の 1 行を出します(-q で消せます)。

af-aws-exec: running as arn:aws:sts::222222222222:assumed-role/AWSReservedSSO_Developer_…/you@example.com in region ap-northeast-1 (expires …)

実際にどのアカウント・ロールで動くかは、この行で確かめられます。(expires …) は資格情報に有効期限があるときだけ付きます。リージョンが決まっていないときは in region (none) と出ます。

$ af-aws-exec --list
Sandbox 333333333333 Developer ("Sandbox")
Staging 222222222222 Developer ("Staging")
Deploy 444444444444 deploy ("Deploy", role assumed from Staging)
Production 111111111111 Deployer ("Production", asks for confirmation before use: usable through af-aws-exec only, not in ~/.aws/config)
prod-app (not exported: Settings labels prod app / prod-app all map to this name; rename all but one)

実際の出力はタブ区切りです。ここでは読みやすいように空白でそろえています。

1 行に 1 つのプロファイルが、タブ区切りで、名前・アカウント・ロール・ラベルの順に並びます。ラベルはかっこと引用符で 囲まれます。

  • ロールを引き受けるプロファイルは ("ラベル", role assumed from <元のプロファイル>) と出ます
  • 「使用前に確認」のプロファイルは、~/.aws/config に書き出されない旨がラベルの後ろに出ます
  • ~/.aws/config に書き出されなかったプロファイルは、一覧の後ろに 名前 (not exported: 理由) の形で出ます。アカウントとロールの列は ありません。理由は、同じ名前になるラベルが 2 つある、自分の ~/.aws に同じ名前の定義がある、アカウントかロールがない、 [DEFAULT] の行とぶつかる、などです

プロファイルの名前と ~/.aws/config

Section titled “プロファイルの名前と ~/.aws/config”

登録したプロファイルは ~/.aws/config にも書き出されます。aws --profile <名前>・AWS SDK・ビルドツール (Gradle、Maven、CDK、Terraform など)から、設定を写し直さずに名前で選べます。AWS_PROFILE=<名前> よりも --profile(またはツール自身のプロファイル設定)を使ってください。シェルに設定済みのキー(AWS_ACCESS_KEY_ID など)は AWS_PROFILE より優先されるので、コマンドが誰として動くかを固定できません。

  • 名前はプロファイルのラベルの、英数字と ._@- 以外の文字を - に置き換えたものです(ラベル prod app → プロファイル prod-app)。af-aws-exec --list で、名前ごとにアカウント・ロール・ラベルを一覧できます。 名前だけでなく、それらを見て選んでください。
  • 2 つのラベルが同じ名前になるとき(prod app と prod-app)は、どちらも書き出しません(--list に出ます)。 どちらを選んでも別のアカウントかもしれないためです。設定画面でどちらかの名前を変えてください。
  • ファイル末尾の 管理ブロック(# agent-fleet で始まる 2 行の目印の間)に入ります。編集は設定画面で行って ください。ブロックの中は(aws configure set で書き込んだ分も)書き直されます。ブロックの外はあなたのもので、 そのまま残ります。書き出すのはアカウントとロールの両方があるプロファイルだけです。両方ないと aws --profile <名前> は SSO を使わず、ワークスペース自身のロールで気づかないうちに動き、片方だけだと失敗するためです。 どちらがないかは --list に出ます。~/.aws/config の [DEFAULT] の行がプロファイルを壊す場合(違うリージョン、すべてのプロファイルに そのロールを引き受けさせる role_arn など)、そのプロファイルは書き出さず、af-aws-exec --list がその行を示します。 同じ名前のプロファイルを自分で定義済みなら(~/.aws/config でも ~/.aws/credentials でも)、 あなたの定義が使われ、こちらからは書き出しません。ラベルが default のプロファイルは書き出しません。 プロファイルを指定しないすべてのコマンドの身元が変わってしまうためです。
  • 変更は 5 分ほどで、または次のワークスペース起動時に反映されます。af-aws-exec を実行するとその場で反映されます。

Console ではプロファイルの行のログイン(前述)で同じことができます。端末では、素の aws sso login はワークスペース内の 127.0.0.1 へ戻す方式で、あなたのブラウザからは 届きません。device-code 方式を使ってください。

ターミナルウィンドウ
aws sso login --profile <名前> --use-device-code --no-browser

表示された URL を開いてコードを承認します(承認するのは、いま自分で始めたコードだけ)。ログインは同じプロファイルの SSM セッションと共有されるので、1 回で両方に効きます。

プロファイルの指定が要る理由

Section titled “プロファイルの指定が要る理由”

コンテナのワークスペース(docker または AWS ECS、Agent Fleet 0.26.0 以降)では、セッションとターミナルに AWS の身元は 渡りません。

  • ワークスペース自身のロール(ワークロードロール)は渡しません。Agent が起動するものすべてから、その資格情報の 環境変数を外します。
  • マシンの身元も渡しません。SDK のインスタンスメタデータ参照を止めます(AWS_EC2_METADATA_DISABLED=true)。 この変数を無視するツールを止めるのはホスト側のネットワーク遮断で、管理者が 0.26.0 への移行を終えて初めて効きます (そのほかの運用上の制御)。
  • あなた自身のマシンで直接動くワークスペースはそのままです。そこのインスタンスロールはあなたのマシンのもので、SDK は 引き続きそれを見つけます。

そのため、コマンドがどの身元で動くかは、プロファイルを指定しているかで決まります。

コマンド どうなるか
プロファイルを指定していない(素の aws …、SDK の既定の資格情報チェーン、プロファイル設定のないビルドツール) 「Unable to locate credentials」(またはその SDK の言い回し)で止まります
指定したプロファイルの名前が違う・ログインが切れている そのプロファイルのエラーで止まります
プロファイルを指定していない。管理者がワークスペース自身のタスクロールを再び使えるようにしている(AWS ECS) そのロールで、別のアカウントで、気づかないうちに動きます

「Unable to locate credentials」はプロファイルを指定するという意味で、「資格情報を設定する」という意味ではありません。 aws configure、aws login(CLI 自身の案内)や ~/.aws の [default] セクションのキーで対処せず、資格情報を別の所から 探さないでください。デプロイ、書き込み、そのほかアカウントが重要な操作は、資格情報を明示して渡してください。

ターミナルウィンドウ
af-aws-exec --profile <名前> -- ./gradlew deploy
af-aws-exec --profile <名前> -- npx cdk deploy

例: S3 アップロードのプラグインを使うビルドツール

Section titled “例: S3 アップロードのプラグインを使うビルドツール”

AWS プラグイン(S3 へのアップロードタスクなど)で組んだ Gradle のデプロイタスクは、ビルドスクリプトにプロファイルが なければ、SDK の既定のチェーンに次の順で尋ねます。環境変数、JVM のシステムプロパティ、~/.aws の default プロファイル、コンテナの資格情報とインスタンスメタデータ。そのためセッションで ./gradlew uploadArtifact を実行すると、 ワークスペースのロールでアップロードする代わりに「Unable to load AWS credentials from any provider in the chain」で 止まります。アカウントを指定して、あなたとして実行してください。

ターミナルウィンドウ
af-aws-exec --profile <名前> --account <ID> --region <リージョン> -- ./gradlew uploadArtifact
  • プラグインは、チェーンの最初に見る環境変数でプロファイルの短命な資格情報を見つけます。
  • 「running as」の行で、誰がアップロードするかが分かります。
  • ビルドスクリプト自身がプロファイルを指定している(profileName = "prod" など)ときは、 コマンドに渡す設定 を見てください。

実行はすべてセッションの会話に出ます

Section titled “実行はすべてセッションの会話に出ます”

af-aws-exec の実行はそれぞれ、実行したセッションの会話に 1 行を残します。

  • 出るもの: プロファイル、実行に使ったアカウントとロール、リージョン、コマンド(aws s3 ls、またはプログラム名だけ)、 または af-aws-exec が実行を拒否した理由。コマンドの引数は決して入りません(秘密が入りうるため)。
  • 出る場所: それを実行したシェルの呼び出しの下、ターンの作業の中です。実行の多いターンでも返答が埋もれません。
    • 1 つの呼び出しの複数の実行は件数付きの 1 行にまとまり、開くと 1 件ずつ見られます。拒否された実行は赤字の件数で出ます。
    • どの呼び出しにも結びつけられない実行(会話に時刻を記録しない種類、バックグラウンドのプロセス)は、開始した時刻の 位置に同じようにまとめて出ます。
    • 表示が途中で切れたシェルの呼び出しは、開くと実行したコマンド全文が見られます。
  • 出ないもの: コマンドがどう終わったか。af-aws-exec はそのコマンド自身になるので、終了ステータスはシェルが受け取る ものがそのまま正です。
  • 全セッション分: 設定 > AWS プロファイル/SSM の「最近の実行」に、全セッションの最近の実行が並びます。
  • 監査ではありません。 何が動いたかを見るためのものです。セッションは実行が申告したもので、コマンド側から変えられます。 素の aws で実行したコマンドは行を残しません。

設定 > AWS プロファイル/SSM のプロファイルのフォームで「使用前に確認」をオンにできます。すると af-aws-exec は、 各セッションでそのプロファイルを初めて使う前、資格情報を取り出す前に確認を求めます。

  • 確認の出る場所: セッションの会話のカード(その会話が画面にないときはトースト)。セッション、プロファイル、その アカウントとロールを示し、このセッションで許可 と 拒否 を選べます。
  • 許可は 8 時間かセッションの終了まで続き、今の設定のプロファイルに対してだけ有効です。アカウント、ロール、ポータルを 編集すると、もう一度確認を求めます。
  • 拒否したとき・時間内に答えなかったとき: コマンドは実行されず、af-aws-exec は終了コード 4 で終わります。答えていない依頼は 15 分残るので、後から許可すれば、エージェントの次の実行は通ります。
  • このように設定したプロファイルから連鎖するロールも、そのプロファイルの確認を求めます。
  • このプロファイルは ~/.aws/config に書かれないので、素の aws --profile では使えません。af-aws-exec で実行してください。

できないこと。 間違いや気付かない使用を防ぐもので、わざと回り込もうとするエージェントは止めません。

  • エージェントはワークスペース自身の仕組みで依頼に答えられます(そのときの会話の行には「Console を通さずに承認」と出ます)。
  • エージェントは、同じサインインのほかのプロファイルでログインしていれば、ログインし直さずに使えます。専用のサインインに置き、使い 終わったらログアウトするプロファイルは、毎回デバイスコードの承認が要ります。

プロファイルを claude の Amazon Bedrock のモデル呼び出しに使うこと(プロファイルのフォームの「モデルのルート」の印)は Amazon Bedrock のルート にあります。

読み取りだけの調べものは aws --profile で

Section titled “読み取りだけの調べものは aws --profile で”

デプロイ、書き込み、ビルドツール、SDK のプログラム、スクリプトは、引き続き af-aws-exec で実行します。素の aws --profile にはない、次のことをするからです。

  • アカウントを確かめる(--account)
  • SSO プロファイルを読めない SDK のツール(Gradle/Maven のプラグインに多い AWS SDK for Java v1 などの古い SDK)にも、 短命な資格情報を渡す
  • ログインしていなければ Console であなたに尋ねる
  • ツールによって別の身元を指す名前を断る
  • --region でリージョンを固定し、エンドポイントの上書きを外す

AWS CLI そのものでのちょっとした調べもの(describe-*、list-*、s3 ls)は、設定画面のプロファイルを直接指定して かまいません。ただし、次の確認が isolated と出るシェルの中だけです。確認は 1 語だけを出力し、環境の中身もエラーの 内容も出しません。

ターミナルウィンドウ
if err=$(env -u AWS_PROFILE -u AWS_DEFAULT_PROFILE AWS_IGNORE_CONFIGURED_ENDPOINT_URLS=true \
aws sts get-caller-identity 2>&1 >/dev/null); then st=0; else st=$?; fi
err=${err#"${err%%[![:space:]]*}"}
if [ "$st" = 253 ] && [ "$(printenv AWS_EC2_METADATA_DISABLED)" = true ] && [ "${AF_WS_WORKLOAD_AWS:-}" != 1 ] \
&& [ -z "$(env | cut -d= -f1 | grep -E '^AWS_(CONTAINER_|CONFIG_FILE$|SHARED_CREDENTIALS_FILE$|ENDPOINT_URL)')" ] \
&& case $err in "Unable to locate credentials"* | \
"aws: [ERROR]: An error occurred (NoCredentials): Unable to locate credentials"*) true ;; *) false ;; esac
then echo isolated; else echo not-isolated; fi; unset err st

isolated は、次のすべてが成り立つという意味です。そのため打ち間違えたプロファイルやログイン切れのプロファイルは、 別のアカウントについて答える代わりに失敗します。

  • AWS_EC2_METADATA_DISABLED=true が export されていて、CLI がインスタンスメタデータに尋ねない
  • 環境にワークロードの資格情報も、AWS の設定ファイルやエンドポイントの上書きもない
  • CLI の既定のチェーン(AWS_PROFILE を外し、設定済みのエンドポイントを無視して)が、CLI 自身の「資格情報がない」 エラー(終了コード 253)で終わった

not-isolated はそれ以外のすべてです。あなた自身の既定の資格情報、期限切れのセッション、失敗した credential_process、ネットワークのエラー。あなた自身のマシンで動くワークスペース、タスクロールを戻している配備、 アップグレード後にまだ起動し直していないワークスペースも、ふつうはそう出ます。not-isolated なら、調べものも af-aws-exec で実行してください。

この確認が見るのはこのシェルが CLI に渡すものだけで、実行方式やバージョン、ホストのネットワーク遮断までは保証しません。 isolated でも、直接の調べものには次のすべてが要り、欠ければ af-aws-exec で実行します。

  • プロファイルは af-aws-exec --list が書き出し済みと示すもので、名前だけでなくアカウントとロールで選びます。 どのアカウントか分からなければ、先に確かめてください。
    • --list が「from an earlier sync; not checked against Settings now」と警告するときは、何も確かめられていません。 af-aws-exec で実行してください。
    • --list に出ないもの、書き出していないと示されるもの、自分で定義したもの(role_arn、credential_process)は af-aws-exec で実行してください。
  • リージョンを指定し、設定済みのエンドポイントを無視させます(--endpoint-url は付けません): AWS_IGNORE_CONFIGURED_ENDPOINT_URLS=true aws --profile <名前> --region <リージョン> ec2 describe-instances。 シェルに古い AWS_REGION が残っているとプロファイルのリージョンより優先され、~/.aws/config の endpoint_url (エミュレーターの設定の残りなど)があると AWS 以外へ要求が送られます。
  • 確認したのと同じシェルで実行します。
  • SSO トークンのエラーは、ログインしていないという意味です。素の aws --profile は Console に尋ねないので、尋ねる af-aws-exec で実行し直してください。
  • af-aws-exec が断ったプロファイルは、ここでも使えません。素の --profile は抜け道になりません。

ワークスペースのエージェントも同じ決まりに従います。

  • プロファイルの短命な資格情報を、そのコマンド 1 つの環境変数にだけ渡します。af-aws-exec 自身は資格情報を どこにも書かず、表示するのは実行する身元だけです(AWS CLI は従来どおり ~/.aws に自分のログインとロールの キャッシュを持ちます)。
  • ワークロードロールへの経路は塞がれます。 ログインしていない・ログインが切れているときは、別の身元に落ちずに失敗します。 ワークスペース内では端末でも Console に尋ね(ログインしていないとき)、--login を付けると その端末で device-code ログインを走らせます。
  • 資格情報の寿命は、SSO のロールセッション、または引き受けたロールのセッション(多くは 1 時間)です。それより長い コマンドは、期限で身元が切り替わるのではなく失敗します。

使える設定画面のプロファイル

Section titled “使える設定画面のプロファイル”

設定画面のプロファイルには、アカウントとロールを入れておく必要があります。資格情報は、そのプロファイルの SSO 設定 だけを書いた最小の設定ファイルから、エンドポイントの上書きを無視して SSO ログイン経由でのみ取得し、さらにそれがその アカウントの、そのプロファイルの許可セットのロールのセッションであることを AWS に確かめます。

プロファイルに次のものも書かれていると断ります。

ほかに書かれているもの 断る理由
role_arn(空でも)、パスの入った web_identity_token_file AWS CLI がその SSO ログインを使わなくなるため
source_profile・credential_source・credential_process・静的キー(~/.aws/config でも ~/.aws/credentials でも)、空の web_identity_token_file(role_arn と一緒でも) AWS CLI は SSO を使いますが、ほかの SDK やツールはそちらを先に使うため、1 つの名前がツールごとに別の身元を指してしまうため
  • [DEFAULT] セクションのキーも(CLI がすべてのプロファイルに適用するため)、値が空のキーも数えます。
  • 資格情報を同じ名前で ~/.aws/credentials に同期するツール(yawsso など)が原因になります。別の名前に同期してください。
  • --profile default は断ります。SSO プロファイルを名前で指定してください。
  • 1 つの名前が 2 つを指す場合は断ります。2 つの設定ラベルが同じ名前になる場合と、設定のプロファイルと同じ名前を ~/.aws で自分で定義していて、アカウント・ロール・ログインのポータルのどれかが違う場合です。

アカウントによっては、~/.aws に自分で書いたプロファイルでしか入れません。source_profile からロールを引き受けるもの (role_arn と source_profile)や、credential_process を持つものです。このようなプロファイルは、--account で アカウントを指定すれば af-aws-exec で実行できます(ここでは必須です)。

ターミナルウィンドウ
af-aws-exec --profile deploy-target --account <ID> --region <リージョン> -- ./deploy.sh

動きかた。 AWS CLI があなた自身のファイルからプロファイルを解決します。このとき AWS CLI 自身がワークロードロールに 届く経路(コンテナの資格情報の環境変数・IMDS)とエンドポイントの上書きは止めてあります。AWS が報告する資格情報の アカウントがそのアカウントのとき(ロールならそのロールのセッションのとき)だけ、コマンドを実行します。

  • credential_process はあなた自身のプログラムで、書かれたとおりに動きます。af-aws-exec が確かめるのは返された 資格情報のアカウントで、その出どころではありません。失敗したときは、その出力を表示しません。原因は自分で実行して 確かめてください。
  • 渡すのは一時的な資格情報だけです。長期のキーそのものになるプロファイルは断るので、そのキーでロールを引き受ける形に してください。
  • たどった先の SSO プロファイルにログインしていないときは、終了コード 3 で、その SSO プロファイルの aws sso login コマンドを示します(端末ではその場でログインを始めます)。Console には尋ねません。
  • このプロファイルは af-aws-exec --list には出ず、設定画面のプロファイルと同じ名前にはできません。
  • 元のキーはこれまでどおり ~/.aws のファイルにあり、af-aws-exec がコマンドに渡すことはありません。

次のときは、何も取得せずに断ります。

  • プロファイル自身か source_profile でたどる先のどれか([DEFAULT] セクションも含む)が、credential_source (ワークスペース自身の資格情報を取るもの)、web_identity_token_file、login_session、mfa_serial(エージェントが 実行すると MFA の入力に誰も答えられない)を持つとき
  • たどる先のプロファイルが資格情報の取り方を 2 つ以上持つとき。たとえば credential_process やロールのプロファイルに キーもある(セッショントークンだけでも、~/.aws/config に書いたキーでも数えます)。AWS CLI とほかの SDK で使う方が 食い違うためです
  • たどった先の SSO プロファイルの設定が欠けているとき、またはたどる先が壊れているとき

取り方はプロファイルごとに 1 つにして、キーは専用のプロファイルに置き、それを source_profile に指定してください。 例外は、名指ししたロールのプロファイルが自分自身を source_profile にし、キーをそこに持つ場合だけです。

コマンドがログインを必要としたとき(エージェントのコマンド、または shell セッションの端末で自分が実行したコマンド)は、 Console で尋ねます。対象は設定画面のプロファイルです。自分で定義したプロファイルや --no-login では、終了コード 3 と、 端末で実行するログイン用のコマンドを出して終わります。

画面下部のトーストに、プロファイル、設定画面のアカウントとロール、依頼元のセッションが出ます。依頼が取り下げられるまでの カウントダウンも出ます(コマンドが最後に尋ねてから 15 分。そのログインを進めている間は出ません)。

  1. トーストのログインを押すと、ログインの画面が開きます。何のためのログインかを確かめます。
  2. そこでログインを押します。ログインのコードはそのとき初めて作られ、その画面にだけ表示されます。
  3. コードを確かめてログインして承認を押し、開いたページで承認します。

エージェントのコマンドは 1 分半ほど(エージェントのセッション以外、たとえば shell のセッションのスクリプトからなら数秒) 待ち、承認されれば続きます。それまでに諦めていれば、エージェントがもう一度実行します。

トーストで どうなるか
閉じる 依頼は残り、ほかのブラウザの Console にも出続けます。ブラウザでログインできない端末では、閉じてから別のブラウザの Console でログインを押してください
依頼を取り消す そのログインをしないときに使います。依頼を取り下げ、そのプロファイルについては 1 分ほど再び尋ねません
トーストを閉じる そのタブで隠れるだけです

設定のプロファイルの行のログインは、その 1 分の間も含めていつでも使えます。

自分の端末(shell・SSM セッション)では:

  • Console に尋ねたことを表示し、device コードの有効期間と同じ最大 10 分、あなたがそこで承認するのを待ちます。承認されれば 再実行なしで続きます。
  • Ctrl-C で待つのをやめると、終了コード 3 で終わり、依頼は Console に残ります。
  • --login を付けると、代わりにその端末で device-code ログインを走らせます(URL とコードがそこに出ます)。Console に 尋ねられないときや、Console の対象外のプロファイルでも同じです。
  • ワークスペースの外では、端末ならその場でログインを始め、端末がなければ終了コード 3 で終わります。

コマンドには、選んだプロファイルだけを定義した AWS 設定(同じ短命の資格情報を返します)を渡し、資格情報ファイルと AWS_ENDPOINT_URL* の上書きは渡しません。

コマンドの中のツール 結果
プロファイルを指定しない、または同じプロファイルを指定する そのまま動きます
別のプロファイルを指定する(Terraform の profile = "staging"、cdk deploy --profile staging、スクリプト内の AWS_PROFILE=staging) 気づかないうちにそちらで動くのではなく、「The config profile (staging) could not be found」で失敗します
AWS_ACCESS_KEY_ID を差し替える(assume-role の後など) 選んだプロファイルはそこでは解決できなくなり、気づかないうちに新しいアカウントを指すことはありません。新しい資格情報は --profile を付けずに使ってください
  • 「could not be found」が出たら、ツール側のプロファイル指定を外すか、そのプロファイルで実行してください (af-aws-exec --profile staging …)。
  • これを通すために --keep-aws-config を付けないでください。 あなたの ~/.aws とエンドポイント設定がツールに戻り、 ツールが指定したプロファイルで動いてしまいます。--keep-aws-config は、それらのファイルのほかの設定が必要なツールの ためのものです。
  • その設定を非公開に保てない場合(ほかのユーザーが書き込めるホームディレクトリなど)は、代わりに空の AWS 設定を渡して 警告を出します。分離は保たれ、同じプロファイルを指定するツールだけがそれを見つけられなくなります。
  1. --region を付ければ、それ
  2. 付けなければ、シェルですでに設定済みのもの(AWS_REGION、次に AWS_DEFAULT_REGION)
  3. どちらもなければ、プロファイルのもの

コマンドには AWS_REGION と AWS_DEFAULT_REGION の両方で渡し、「running as」の行にも出ます。シェルに古い AWS_REGION が残っているとプロファイルのリージョンより優先されるので、デプロイでは --region を付けてください。

--account <ID> を付けると、そのプロファイルがその AWS アカウントでない限り実行しません。デプロイするスクリプト・ 手順書・エージェントへの指示には付けておくと、プロファイル名を間違えても何も起きる前に止まります。設定画面の プロファイルではない(自分で定義した)プロファイルでは --account が必須です。