Chapter 97 · Resilience Hub Failure Mode Assessment
Subchapter 97.1
references/assessment-workflow.mdMarkdown13 KBView on GitHub
This SOP guides you through running Resilience Hub v2 failure mode assessments, interpreting findings, triaging by severity, working with service functions, resolving findings, and generating reports. Use after initial setup is complete and a service has input sources configured.
service_arn (required): ARN of the service to assess
finding_id (optional): Specific finding ID to resolve or investigate
report_type (optional, default: “FAILURE_MODE”): Report type — use FAILURE_MODE for this workflow (check aws resiliencehubv2 create-report help for any other report types)
Check for required tools and warn the user if any are missing.
Constraints:
command -v aws) or the AWS MCP server’s call_aws tool is availablestart-failure-mode-assessment) during verification — only check that the tooling is presentVerify the estimated cost before running an assessment.
Constraints:
aws resiliencehubv2 get-service --service-arn {service_arn}, which returns an estimatedAssessmentCost object (amount + currency) — present that to the user as the API’s estimate. If it is absent (e.g., resource discovery has not run yet), fall back to the pricing page above.Run the asynchronous assessment.
Constraints:
call_aws tool when connected, otherwise the AWS CLI directly): aws resiliencehubv2 start-failure-mode-assessment --service-arn {service_arn}Wait for the assessment to complete.
Constraints:
call_aws tool when connected, otherwise the AWS CLI directly): aws resiliencehubv2 list-failure-mode-assessments --service-arn {service_arn}Get findings and present them organized by severity and action required.
Constraints:
call_aws tool when connected, otherwise the AWS CLI directly): aws resiliencehubv2 list-failure-mode-findings --service-arn {service_arn} — this returns a SUMMARY per finding: findingId, name, description, failureCategory, severity, status, policyComponentaws resiliencehubv2 get-failure-mode-finding --service-arn {service_arn} --finding-id {finding_id} per finding; only this returns reasoning plus infrastructureAndCodeRecommendations, observabilityRecommendations, and testingRecommendations (list-failure-mode-findings does NOT return these)get-service or list-failure-mode-assessments), per policyComponent as returned by the API (illustratively AVAILABILITY_SLO, MULTI_AZ_DISASTER_RECOVERY, MULTI_REGION_DISASTER_RECOVERY, DATA_RECOVERY — verify the full set from the get-service response rather than assuming a fixed list) — achievability (ACHIEVABLE / NOT_ACHIEVABLE) is NOT a per-finding fieldget-service / list-failure-mode-assessments reports a policyComponent not listed above (the service may add components over time), do NOT ignore it: consult the current AWS Resilience Hub v2 documentation or the get-service response for the full set of supported policy components, and triage it by its achievability and severity like any other.failureCategory is not one of the values above (the service may add categories over time), do NOT ignore the finding: consult the current AWS Resilience Hub v2 documentation (e.g., aws resiliencehubv2 get-failure-mode-finding help or the service docs) for how to address it, and triage it by severity and achievability like any other finding.Examine AI-generated service functions and refine if needed.
Constraints:
call_aws tool when connected, otherwise the AWS CLI directly): aws resiliencehubv2 list-service-functions --service-arn {service_arn}call_aws tool when connected, otherwise the AWS CLI directly): aws resiliencehubv2 update-service-function --service-arn {service_arn} --service-function-id {id} --name {name} --criticality {criticality}aws resiliencehubv2 update-service-function help or the service docs rather than assuming a fixed set (illustratively PRIMARY/SUPPLEMENTAL). Note there is no service-function “type” parameteraws resiliencehubv2 create-service-function-resources --service-arn {service_arn} --service-function-id {id} --resources '["resource-id-1","resource-id-2"]' (and delete-service-function-resources to remove); these adjust only the service function’s resource set — there is still no type parameterView resource connectivity to understand blast radius.
Constraints:
call_aws tool when connected, otherwise the AWS CLI directly): aws resiliencehubv2 list-service-topology-edges --service-arn {service_arn}Mark findings as resolved after remediation is complete.
Constraints:
call_aws tool when connected, otherwise the AWS CLI directly): aws resiliencehubv2 update-failure-mode-finding --service-arn {service_arn} --finding-id {finding_id} --status {status} --comment "{resolution_comment}" (typically RESOLVED after remediation; choose {status} per the status guidance below)aws resiliencehubv2 update-failure-mode-finding help or the service docs rather than relying on a hardcoded list (illustratively OPEN/RESOLVED/IRRELEVANT). If a finding does not apply to the user’s use case (rather than being fixed), they SHOULD mark it not-applicable (e.g. IRRELEVANT) with a comment explaining why, instead of RESOLVED.Create an exportable report from assessment results.
Constraints:
call_aws tool when connected, otherwise the AWS CLI directly): aws resiliencehubv2 create-report --service-arn {service_arn} --report-type {report_type}aws resiliencehubv2 create-report help for any other supported report types)aws resiliencehubv2 list-reports --service-arn {service_arn} until status is SUCCEEDED or FAILEDaws:SecureTransport (TLS) to enforce encryption in transit for all access, scoped with aws:SourceArn / aws:SourceAccount condition keys so only this service’s Resilience Hub principal can write, and S3 server access logging for an access audit trail.aws logs associate-kms-key), since findings and topology can reveal sensitive architectural detailreportOutput.s3ReportOutput.s3ObjectKey on success or failedReportOutput.errorCode on failure; surface the returned errorCode to the user (illustratively INSUFFICIENT_PERMISSIONS/CONFIGURATION_ERROR/INTERNAL_ERROR) and consult the create-report/list-reports documentation for the full set — handle any unrecognized code gracefully rather than assuming a fixed list# Run assessment
aws resiliencehubv2 start-failure-mode-assessment --service-arn arn:aws:resiliencehub:us-east-1:123456789012:service/checkout-api
# Check status
aws resiliencehubv2 list-failure-mode-assessments --service-arn arn:aws:resiliencehub:us-east-1:123456789012:service/checkout-api
# Get findings
aws resiliencehubv2 list-failure-mode-findings --service-arn arn:aws:resiliencehub:us-east-1:123456789012:service/checkout-api
# Resolve a finding
aws resiliencehubv2 update-failure-mode-finding \
--service-arn arn:aws:resiliencehub:us-east-1:123456789012:service/checkout-api \
--finding-id finding-abc123 --status RESOLVED \
--comment "Fixed: added multi-AZ Aurora replica. Validated with FIS experiment EXP-xyz on 2026-05-20."
# Generate report
aws resiliencehubv2 create-report --service-arn arn:aws:resiliencehub:us-east-1:123456789012:service/checkout-api --report-type FAILURE_MODEAssessment fails immediately
Check that input sources are valid and the service has at least one configured. Use aws resiliencehubv2 list-input-sources --service-arn {service_arn}.
No findings generated The service may have no discoverable resources, or the architecture already meets all policy targets. Verify input sources point to deployed infrastructure.
Report generation fails with INSUFFICIENT_PERMISSIONS The service’s reportConfiguration references an S3 bucket that the invoker role cannot write to. Update the bucket policy or the service’s IAM configuration.