resilience-hub-multi-account
aws/agent-toolkit-for-aws
Set up AWS Resilience Hub v2 for multi-account resilience assessments across AWS Organizations.
What is resilience-hub-multi-account?
Configures Resilience Hub v2 to assess workloads and resources across multiple AWS accounts from a central account using the per-service cross-account permission model. Use this when you need centralized resilience management and cross-account resource discovery without relying on AWS Organizations delegated-administrator registration.
- Configure invoker and cross-account IAM roles for centralized assessment
- Register services with per-service cross-account permission models using the resiliencehubv2 API
- Discover and assess resources spanning multiple member accounts from a single central account
- Implement external IDs and trust policies to prevent confused-deputy attacks
- Enable CloudTrail logging and monitoring for cross-account AssumeRole calls
How to install resilience-hub-multi-account
npx skills add https://github.com/aws/agent-toolkit-for-aws --skill resilience-hub-multi-account- AWS CLI v2 with resiliencehubv2 support or AWS MCP server configured
- Access to both central (invoker) and member AWS accounts with IAM permissions
- Cryptographically random external ID generated and stored securely (AWS Secrets Manager or SSM Parameter Store)
- CloudTrail enabled in central and member accounts for logging
How to use resilience-hub-multi-account
- 1.Review the multi-account procedure reference file (references/multi-account-procedure.md) for step-by-step setup
- 2.Create an invoker role in the central account with permissions to call resiliencehubv2 APIs
- 3.Create cross-account roles in each member account with read-only discovery permissions (Describe* actions)
- 4.Configure trust policies on member-account roles to allow the central invoker role to assume them
- 5.Register each service using aws resiliencehubv2 create-service with the per-service cross-account permission model, including invoker role name and cross-account role ARNs with external IDs
- 6.Validate cross-account assessment by running a resilience assessment and confirming resources are discovered in member accounts
- 7.Monitor CloudTrail logs for cross-account AssumeRole calls and set up alarms for failed assumptions
Use cases
- Assess resilience of workloads distributed across multiple AWS accounts in an Organization
- Centralize resilience management and visibility from a single account without delegated-administrator setup
- Configure cross-account resource discovery for CloudFormation, EC2, RDS, and other services
- Set up least-privilege cross-account roles for read-only resilience assessments
- Troubleshoot and validate cross-account permission models and external ID configuration
- AWS Organization administrators managing multi-account resilience
- DevOps and infrastructure teams responsible for cross-account workload resilience
- Cloud architects designing centralized resilience assessment strategies
- Security teams implementing least-privilege cross-account access patterns
resilience-hub-multi-account FAQ
No. Delegated-administrator registration (via Organizations trusted access and the Resilience Hub console) is for organization-wide policy management and visibility only, not for cross-account assessments. Use the per-service cross-account permission model in this skill instead.
The external ID is a cryptographically random shared secret that prevents confused-deputy attacks when the central account assumes cross-account roles. Generate it securely, store it in AWS Secrets Manager or SSM Parameter Store, and never commit it to source control or embed it in plaintext.
The resiliencehubv2 API enforces a maximum limit on cross-account role ARNs per service. Verify the current limit from the AWS API documentation or model rather than assuming a fixed number.
Scope the cross-account role to read-only discovery permissions only, such as cloudformation:Describe*, ec2:Describe*, and rds:Describe*. Avoid granting write or mutate actions.
Verify that (1) the cross-account role ARN in the permission model matches exactly, (2) the cross-account role trust policy allows the central invoker role to assume it, and (3) the external ID matches if configured. Check CloudTrail logs for failed AssumeRole attempts.
Full instructions (SKILL.md)
Source of truth, from aws/agent-toolkit-for-aws.
name: resilience-hub-multi-account description: > Configures AWS Resilience Hub v2 for multi-account resilience management across an AWS Organization. Covers the per-service cross-account permission model, cross-account IAM roles, and centralized assessment from a single account. Applies when the user wants to set up org-wide resilience or assess workloads that span multiple AWS accounts. version: 1
Multi-Account Resilience Hub v2 Setup
Overview
Domain expertise for configuring Resilience Hub v2 to assess services across multiple
AWS accounts from a central account. All CLI commands in this skill use the aws resiliencehubv2
namespace — the Resilience Hub v2 API surface — which is distinct from the legacy aws resiliencehub
(v1) commands (the service: [resiliencehub, ...] metadata tags the service family, not the CLI namespace).
Resilience Hub v2 supports two complementary multi-account mechanisms: (1) an AWS Organizations
integration — the management account enables trusted access, creates the service-linked role, and
designates a delegated administrator account for organization-wide policy management and visibility;
and (2) the per-service cross-account permission model — an invoker role in the central account that
assumes cross-account roles in member accounts for per-service resource discovery. This skill configures
(2); the Organizations integration (1) is set up separately (management account + console — see below).
The AWS MCP server is recommended for executing this skill's AWS API calls, but it is not required — all operations also work with the AWS CLI directly.
Guardrail — where this skill's own files live (MCP vs local install)
Before reading a reference file, determine how this skill was loaded:
- Loaded via the AWS MCP
retrieve_skilltool: the skill's reference files are not on the local filesystem. Fetch each one throughretrieve_skillwith thefileparameter (e.g.file="references/multi-account-procedure.md") — do NOTfile_readthese paths locally or search the filesystem for them. - Installed locally (e.g.
.kiro/skills/resilience-hub-multi-account/or~/.claude/skills/resilience-hub-multi-account/): read reference files from the local skill directory using the relative paths shown here.
This applies only to the skill's own reference files; always read and write user or session data in the working directory, never through retrieve_skill.
How centralized multi-account assessment works
Two paths, used depending on your goal:
Decision rule (read first): To run cross-account resilience assessments — i.e. assess workloads/resources that live in member accounts from a central account (the common request, including phrasings like "centralized resilience management across my Organization" or "central assessment account") — use the per-service cross-account permission model (path 2 below): an invoker role + cross-account roles +
create-service --permission-model. Do NOT use or recommendaws organizations register-delegated-administrator(or any delegated-administrator registration) as the setup step for cross-account assessments. The Organizations delegated-administrator integration (path 1) is a separate, optional feature scoped to organization-wide policy management and visibility only — it is not how you set up or run cross-account assessments. Only follow path 1 when the request is explicitly about org-wide policy governance, not assessment.
- Organization-wide governance (centralized policies, cross-account visibility): use the AWS
Organizations integration. From the management account, enable trusted access for Resilience Hub,
create the service-linked role, and register a delegated administrator account. This is done via
Organizations trusted access + the Resilience Hub console — there is no
resiliencehubv2register-delegated-administratorCLI operation. The delegated administrator then selects a home Region where organization-level data is aggregated. See the AWS docs page Setting up Organizations integration. - Per-service cross-account resource discovery (assessing a service whose resources span accounts): register each service with a per-service cross-account permission model — an invoker role in the central account plus cross-account role ARNs for each member account. This skill's steps configure this path. Use this command form:
aws resiliencehubv2 create-service --name {service} --regions {regions} \
--permission-model '{"invokerRoleName":"ResilienceHubAssessmentRole","crossAccountRoles":[{"crossAccountRoleArn":"arn:aws:iam::{member_account_id}:role/ResilienceHubAccess","externalId":"{external_id}"}]}'
The
externalIdis a shared secret that defends against confused-deputy attacks — generate a cryptographically random value and store it in AWS Secrets Manager or SSM Parameter Store (SecureString); never commit it to source control or embed it in templates without a dynamic{{resolve:secretsmanager:...}}reference, and ensure it is not emitted in plaintext by CI/CD logs or infrastructure-as-code output (use CloudFormationNoEchoparameters and mask it in pipeline logs).
The cross-account role (in the member account) trusts the central account's invoker role. You can
configure multiple cross-account role ARNs per service — the resiliencehubv2 API enforces a maximum (illustratively 5), so verify the accepted limit from the API/model rather than assuming a fixed number. Note: this per-service model is independent of
the Organizations integration above — there is no register-delegated-administrator operation in the
resiliencehubv2 CLI; organization-wide delegated-administrator registration is performed via AWS
Organizations trusted access and the Resilience Hub console, not a resiliencehubv2 API call.
Configure multi-account setup
To set up cross-account assessment, follow the procedure exactly. See references/multi-account-procedure.md.
Troubleshooting
Cross-account assessment fails with AccessDenied
Verify: (1) the cross-account role ARN in the permission model matches exactly, (2) the cross-account role trust policy allows the central account's invoker role to assume it, (3) the externalId matches if configured.
No resources discovered in a member account
Confirm the cross-account role has read permissions for the in-scope resource types (CloudFormation, EC2, RDS, etc.) and that input sources point to valid resources in the correct region.
Looking for a delegated-administrator setup
Resilience Hub v2 does support an AWS Organizations integration with a delegated administrator for
organization-wide policy management and visibility — but it's configured from the management account
via Organizations trusted access + the Resilience Hub console (create the service-linked role, then
register the delegated administrator), not through a resiliencehubv2 CLI operation (there is no
register-delegated-administrator API). To assess a single service whose resources span accounts, use
the per-service cross-account permission model in this skill. The two are complementary.
Security Considerations
- Least privilege & read-only: scope member-account cross-account roles to read-only discovery permissions (
cloudformation:Describe*,ec2:Describe*,rds:Describe*, etc.) rather than write/mutate actions. - Scope cross-account trust narrowly: trust only the specific central invoker role ARN rather than the whole account where possible.
- Enable logging & monitoring: ensure AWS CloudTrail is enabled in both the central and member accounts to log cross-account
sts:AssumeRolecalls, and alarm on failed or unexpected AssumeRole attempts against the cross-account roles. - Further reading: see IAM best practices, The confused deputy problem, and Security in AWS Resilience Hub for cross-account hardening guidance.
Related skills
More from aws/agent-toolkit-for-aws and the wider catalog.

resilience-program-design
Design org-wide resilience policies with tiered targets and activity cadence.

route53
Configure Amazon Route 53 DNS records, routing policies, health checks, DNS Firewall, and hybrid network resolution.

routing-traffic-with-route53-and-cloudfront
Configure Route 53 DNS routing to CloudFront distributions with custom domains and HTTPS.

running-release-tests
Run automated UI and API release tests via AWS DevOps Agent using pre-configured test profiles.

scanning-with-aws-security-agent
Run AWS Security Agent scans on your codebase to find vulnerabilities with ranked findings and remediation guidance.

securing-s3-buckets
Create and secure S3 buckets following AWS best practices for access control, encryption, monitoring, and remediation.