❓
【AWS】api_helpers が AWSAFTExecution で実行されるのはどこで確認できるのか?【AFT】
AFT のワークショップの中で以下の記述が気になった。
aft-account-customizations-terraform(CodeBuild) の実行ロールの権限かと思ったが、そちらは aft-codebuild-customizations-role
であり権限が弱い。AWSAFTExecution への assume はどこでやっているのか。
NOTE Notice the api_helpers sub-dir? this is where you could add bash / python script to further customize your account. Need more example? check out the example . Keep in mind that these scripts will be executed using AWSAFTExecution in the target AWS account.
aft-account-customizations-terraform の Buildspecより、pre-api-helpers を実行する前に profile を aft-target
に切り替えていることが分かる。
pre_build:
on-failure: ABORT
commands:
- |
if [[ ! -z "$CUSTOMIZATION" ]]; then
source $DEFAULT_PATH/api-helpers-venv/bin/activate
export AWS_PROFILE=aft-target
$DEFAULT_PATH/$CUSTOMIZATION/api_helpers/pre-api-helpers.sh
unset AWS_PROFILE
fi
post-api-helpers.sh も同様。
post_build:
...snip...
if [[ ! -z "$CUSTOMIZATION" ]]; then
source $DEFAULT_PATH/api-helpers-venv/bin/activate
export AWS_PROFILE=aft-target
$DEFAULT_PATH/$CUSTOMIZATION/api_helpers/post-api-helpers.sh
fi
aft-target
は creds.sh の処理において、払い出したアカウントの AWSAFTExecution ロールの一時認証情報を設定していることが分かったので、本当に AWSAFTExecution で api-helpers は実行されるようだ。
# Assume AWSAFTExecution in User Defined account
echo "Generating credentials for ${AFT_EXECUTION_ROLE} in vended account account: ${VENDED_ACCOUNT_ID}"
CREDENTIALS=$(aws sts assume-role --role-arn "arn:${AWS_PARTITION}:iam::${VENDED_ACCOUNT_ID}:role/${AFT_EXECUTION_ROLE}" --role-session-name "${ROLE_SESSION_NAME}" --profile aft-management-admin)
write_to_credentials "aft-target" "${CREDENTIALS}"
Discussion