委任先の確認方法
organizations::ListDelegatedAdministrators と organizations::list-delegated-administrators API を利用し、以下の手順で取得します。
1. 委任された管理者一覧の取得
aws organizations list-delegated-administrators
2. 委任された管理者に委任されているサービスの確認
XXXXXXXXXXXX の部分は前のステップで確認した管理者のアカウントIDです。
aws organizations list-delegated-services-for-account --account-id XXXXXXXXXXXX
確認用スクリプト
以下のスクリプトで全委任先アカウントに委任したサービスが確認できます。
#!/usr/bin/env bash
set -euo pipefail
# 1. 委任管理者一覧取得
admins_json=$(aws organizations list-delegated-administrators)
# 2. アカウント ID / Name 抽出 (配列化)
account_lines=$(echo "$admins_json" | jq -r '.DelegatedAdministrators[] | [.Id,.Name] | @tsv')
# 3. 各アカウントでサービス一覧取得しオブジェクト生成
tmp_objects=()
while IFS=$'\t' read -r acc_id acc_name; do
[[ -z "$acc_id" ]] && continue
services_json=$(aws organizations list-delegated-services-for-account --account-id "$acc_id")
services_array=$(echo "$services_json" | jq '[.DelegatedServices[] | {ServicePrincipal, DelegationEnabledDate}]')
obj=$(jq -n --arg id "$acc_id" --arg name "$acc_name" --argjson svcs "$services_array" '{($id): {account_name: $name, delegated_services: $svcs}}')
tmp_objects+=("$obj")
done <<< "$account_lines"
# 4. マージして出力
if [[ ${#tmp_objects[@]} -gt 0 ]]; then
printf '%s\n' "${tmp_objects[@]}" | jq -s 'reduce .[] as $i ({}; . * $i)'
else
echo '{}' | jq '.'
fi