AWS DevOps Agent スペースに AWS CLI でセカンダリソースのアカウントを追加・削除する

AWS DevOps Agent スペースに AWS CLI でセカンダリソースのアカウントを追加・削除する

AWS DevOps Agent のセカンダリリソースとして AWS アカウントを追加・削除する AWS CLI コマンドを紹介します。
2026.07.30

AWS DevOps Agent は他の AWS アカウントをセカンダリソースとして追加することで調査の対象を広げることができます。以前に、AWS CloudFormation StackSets と AWS CLI を使って、AWS Organizations 配下のアカウントをセカンダリソースとして一括で追加する方法を紹介しましたが(下記ブログ)、今回は新規アカウント発行時やアカウント廃止時にセカンダリソースとして追加・削除する運用をするために AWS CLI コマンドで設定してみました。

https://dev.classmethod.jp/articles/aws-devops-agent-add-accounts-secondary-resource/

なお、本ブログでは、前提としてセカンダリソースの追加に必要な IAM ロールは StackSets の自動デプロイ機能により作成する環境を想定しています。

https://dev.classmethod.jp/articles/aws-devops-agent-secondary-account-iam-role-stackset/

新規アカウント発行時のセカンダリソースへの追加

AWS DevOps Agent スペースが存在するアカウントにおいて、devops-agent associate-service コマンドを実行してセカンダリソースを追加します。新規発行アカウント ID を SECONDARY_ACCOUNT_ID に格納し、StackSets で展開している IAM ロール名を SECONDARY_ROLE_NAME に格納します。

AGENT_SPACE_ID="f2050f98-39ce-471f-96d4-cdc8eEXAMPLE"
AGENT_SPACE_REGION="ap-northeast-1"
SECONDARY_ACCOUNT_ID="111122223333"
SECONDARY_ROLE_NAME="aws-devops-agent-role"

aws devops-agent associate-service \
  --agent-space-id "${AGENT_SPACE_ID}" \
  --service-id aws \
  --configuration "{
    \"sourceAws\": {
      \"accountId\": \"${SECONDARY_ACCOUNT_ID}\",
      \"accountType\": \"source\",
      \"assumableRoleArn\": \"arn:aws:iam::${SECONDARY_ACCOUNT_ID}:role/${SECONDARY_ROLE_NAME}\"
    }
  }" \
  --region "${AGENT_SPACE_REGION}"

実行結果例です。

{
    "association": {
        "agentSpaceId": "f2050f98-39ce-471f-96d4-cdc8eEXAMPLE",
        "createdAt": "2026-07-30T11:29:00.290000+00:00",
        "updatedAt": "2026-07-30T11:29:00.290000+00:00",
        "status": "valid",
        "associationId": "3ea658cb-d2af-40f5-bd6a-4af898cf366e",
        "serviceId": "aws",
        "configuration": {
            "sourceAws": {
                "accountId": "111122223333",
                "accountType": "source",
                "assumableRoleArn": "arn:aws:iam::111122223333:role/aws-devops-agent-role"
            }
        }
    }
}

セカンダリソースが追加されたか確認するコマンドは下記です。セカンダリソースの一覧を取得して、先ほど追加したアカウントが存在するか確認しています。環境変数はセカンダリソースの追加と同様の値でよいので、続けて実行する場合は devops-agent list-associations コマンドだけでも問題ありません。

AGENT_SPACE_ID="f2050f98-39ce-471f-96d4-cdc8eEXAMPLE"
AGENT_SPACE_REGION="ap-northeast-1"
SECONDARY_ACCOUNT_ID="111122223333"

aws devops-agent list-associations \
  --agent-space-id "${AGENT_SPACE_ID}" \
  --region "${AGENT_SPACE_REGION}" \
  --query "associations[?configuration.sourceAws.accountId=='${SECONDARY_ACCOUNT_ID}']"

正常にアカウントが追加されている場合の実行結果の出力例です。

[
    {
        "agentSpaceId": "f2050f98-39ce-471f-96d4-cdc8eEXAMPLE",
        "createdAt": "2026-07-30T11:29:00.290000+00:00",
        "updatedAt": "2026-07-30T11:29:00.290000+00:00",
        "status": "valid",
        "associationId": "3ea658cb-d2af-40f5-bd6a-4af898cf366e",
        "serviceId": "aws",
        "configuration": {
            "sourceAws": {
                "accountId": "111122223333",
                "accountType": "source",
                "assumableRoleArn": "arn:aws:iam::111122223333:role/aws-devops-agent-role"
            }
        }
    }
]

もしアカウントが追加されていない場合は該当するデータがないので下記のような出力となります。

[]

アカウント廃止時のセカンダリソースからの削除

セカンダリソースを削除する場合は devops-agent disassociate-service コマンドを用いて実行します。本コマンドではアカウント ID ではなく、association-id を指定する必要があるため、ASSOCIATION_ID 変数にアカウント ID が一致するセカンダリソースのアソシエーション ID を格納してから実行しています。

AGENT_SPACE_ID="f2050f98-39ce-471f-96d4-cdc8eEXAMPLE"
AGENT_SPACE_REGION="ap-northeast-1"
SECONDARY_ACCOUNT_ID="111122223333"

ASSOCIATION_ID=$(aws devops-agent list-associations \
  --agent-space-id "${AGENT_SPACE_ID}" \
  --region "${AGENT_SPACE_REGION}" \
  --query "associations[?configuration.sourceAws.accountId=='${SECONDARY_ACCOUNT_ID}'].associationId" \
  --output text)

aws devops-agent disassociate-service \
  --agent-space-id "${AGENT_SPACE_ID}" \
  --association-id "${ASSOCIATION_ID}" \
  --region "${AGENT_SPACE_REGION}"

エラーがなければ正常に動作していると思われます。
アカウント追加時と同様に、アカウントの削除を確認するコマンドは下記です。

AGENT_SPACE_ID="f2050f98-39ce-471f-96d4-cdc8eEXAMPLE"
AGENT_SPACE_REGION="ap-northeast-1"
SECONDARY_ACCOUNT_ID="111122223333"

aws devops-agent list-associations \
  --agent-space-id "${AGENT_SPACE_ID}" \
  --region "${AGENT_SPACE_REGION}" \
  --query "associations[?configuration.sourceAws.accountId=='${SECONDARY_ACCOUNT_ID}']"

実行結果例です。何も格納されていなければアカウント ID が一致するアソシエーションはなく、削除できていることが確認できます。

[]

さいごに

AWS DevOps Agent スペースに対して、AWS アカウントをセカンダリソースとして追加・削除する AWS CLI コマンドを紹介しました。新規アカウント発行時にセカンダリソースに追加し、アカウント廃止時にセカンダリソースから削除するという運用を、コマンドとして手順化する機会があったため確認しました。
以上、このブログがどなたかのご参考になれば幸いです。

この記事をシェアする

AWSのお困り事はクラスメソッドへ

関連記事