
Rma Assessment Assistant
- 14 installs
- 9 repo stars
- Updated July 29, 2026
- aws-samples/sample-aws-resilience-skill
RMA Assessment Assistant is a Claude skill that conducts an interactive AWS resilience maturity questionnaire and generates an assessment report with an improvement roadmap.
About
This skill runs an interactive RMA (Reliability, Maintainability, Availability) resilience maturity questionnaire based on the AWS Well-Architected Framework. A developer uses it to score an application's resilience readiness, auto-answer questions by reading architecture docs and IaC, and generate a report with an improvement roadmap. It offers a compact 36-question version and a full 82-question version across 10 principle domains.
- Interactive RMA maturity questionnaire based on the AWS Well-Architected reliability pillar
- Compact (36 questions) and full (82 questions) versions with auto-analysis of architecture docs and IaC
- Generates assessment reports with radar charts, gap heatmaps, and a phased improvement roadmap
Rma Assessment Assistant by the numbers
- 14 all-time installs (skills.sh)
- Ranked #829 of 1,039 Cloud & Infrastructure skills by installs in the Skillselion catalog
- Data as of Jul 30, 2026 (Skillselion catalog sync)
rma-assessment-assistant capabilities & compatibility
- Capabilities
- security audit · documentation
- Works with
- aws
- Use cases
- research · documentation
What rma-assessment-assistant says it does
Conducts interactive maturity questionnaire based on AWS Well-Architected Framework to evaluate application resilience maturity level
Supports compact version (36 core questions) and full version (80 questions).
RMA is an official AWS resilience maturity methodology, but this Skill is an **unofficial assessment aid tool**
npx skills add https://github.com/aws-samples/sample-aws-resilience-skill --skill rma-assessment-assistantAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 14 |
|---|---|
| repo stars | ★ 9 |
| Last updated | July 29, 2026 |
| Repository | aws-samples/sample-aws-resilience-skill ↗ |
What it does
Assess an AWS application's resilience maturity and produce a prioritized improvement roadmap.
Who is it for?
Internal resilience improvement, maturity uplift, and conversation starters about resilience gaps.
Skip if: Formal compliance audits, external auditor validation, or legally required assessments.
When should I use this skill?
A developer wants to benchmark or improve an application's resilience readiness on AWS.
What you get
Produces a resilience maturity score, gap analysis, and phased improvement roadmap in 20 to 60 minutes.
- Resilience assessment report
- Maturity radar chart and gap heatmap
- Phased improvement roadmap with AWS service recommendations
By the numbers
- 36-question compact version
- 82-question full version
- 10 principle domains
Files
Language / 语言
- If the user speaks English, follow SKILL_EN.md
- 如果用户使用中文,请遵循 SKILL_ZH.md
Detect the language from the user's message and load the corresponding instruction file.
Sample Report Snippet
# RMA Resilience Assessment Report
## {Application Name}
**Assessment Date**: 2026-03-01
**Assessment Version**: Lite / Full
**Overall Maturity**: 72% - Fair
## 📊 Executive Summary
### 🔴 Top 5 Critical Findings
1. [Disaster Recovery] - Question 27: DR strategy selection
- Current state: Level 1
- Risk level: High
- Business impact: Complete business disruption during regional failure
### ✅ Strength Areas
- Observability: Unified logging and monitoring already implemented
- Change Management: Fully automated CI/CD pipeline
## 🎯 Improvement Roadmap
### Phase 1 (0–3 months): Critical Risk Mitigation
| Improvement | AWS Service Recommendation | Estimated Effort | Estimated Cost |
|-------------|---------------------------|-----------------|----------------|
| Implement DR strategy | Aurora Global DB, Route 53 | 2–3 weeks | +$1500/month |<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>AWS 系统韧性评估报告</title>
<script src="https://cdn.jsdelivr.net/npm/chart.js@4.4.0/dist/chart.umd.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.min.js"></script>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'PingFang SC', 'Microsoft YaHei', sans-serif;
line-height: 1.6;
color: #232f3e;
background: linear-gradient(135deg, #f5f5f5 0%, #e9ecef 100%);
padding: 20px;
}
.container {
max-width: 1400px;
margin: 0 auto;
background: white;
box-shadow: 0 4px 20px rgba(0,0,0,0.1);
border-radius: 12px;
overflow: hidden;
}
.header {
background: linear-gradient(135deg, #232f3e 0%, #37475a 100%);
color: white;
padding: 40px;
position: relative;
overflow: hidden;
}
.header::before {
content: '';
position: absolute;
top: -50%;
right: -50%;
width: 200%;
height: 200%;
background: radial-gradient(circle, rgba(255,153,0,0.1) 0%, transparent 70%);
animation: pulse 15s ease-in-out infinite;
}
@keyframes pulse {
0%, 100% { transform: scale(1); }
50% { transform: scale(1.1); }
}
.header-content {
position: relative;
z-index: 1;
}
h1 {
font-size: 2.5em;
margin-bottom: 10px;
color: white;
}
.subtitle {
font-size: 1.2em;
opacity: 0.9;
margin-bottom: 20px;
}
.meta-info {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
gap: 15px;
margin-top: 20px;
}
.meta-item {
background: rgba(255,255,255,0.1);
padding: 10px 15px;
border-radius: 8px;
backdrop-filter: blur(10px);
}
.meta-label {
font-size: 0.85em;
opacity: 0.8;
margin-bottom: 5px;
}
.meta-value {
font-size: 1.1em;
font-weight: bold;
}
.content {
padding: 40px;
}
h2 {
color: #232f3e;
font-size: 2em;
margin-top: 40px;
margin-bottom: 20px;
padding-left: 15px;
border-left: 5px solid #ff9900;
}
h3 {
color: #232f3e;
font-size: 1.5em;
margin-top: 30px;
margin-bottom: 15px;
}
h4 {
color: #545b64;
font-size: 1.2em;
margin-top: 20px;
margin-bottom: 10px;
}
.score-banner {
background: linear-gradient(135deg, #ff9900 0%, #ff8c00 100%);
color: white;
padding: 40px;
border-radius: 12px;
text-align: center;
margin: 30px 0;
box-shadow: 0 6px 20px rgba(255,140,0,0.3);
position: relative;
overflow: hidden;
}
.score-banner::before {
content: '';
position: absolute;
top: -50%;
left: -50%;
width: 200%;
height: 200%;
background: radial-gradient(circle, rgba(255,255,255,0.2) 0%, transparent 70%);
}
.score-banner-content {
position: relative;
z-index: 1;
}
.score-value {
font-size: 5em;
font-weight: bold;
margin: 20px 0;
text-shadow: 2px 2px 4px rgba(0,0,0,0.2);
}
.score-stars {
font-size: 3em;
margin: 10px 0;
}
.dashboard {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
gap: 20px;
margin: 30px 0;
}
.stat-card {
background: linear-gradient(135deg, white 0%, #f8f9fa 100%);
border: 2px solid #e0e0e0;
border-radius: 12px;
padding: 25px;
text-align: center;
box-shadow: 0 4px 15px rgba(0,0,0,0.08);
transition: transform 0.3s ease, box-shadow 0.3s ease;
position: relative;
overflow: hidden;
}
.stat-card::before {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 4px;
background: linear-gradient(90deg, #ff9900 0%, #ff8c00 100%);
}
.stat-card:hover {
transform: translateY(-5px);
box-shadow: 0 8px 25px rgba(0,0,0,0.15);
}
.stat-icon {
font-size: 3em;
margin-bottom: 15px;
}
.stat-value {
font-size: 2.5em;
font-weight: bold;
color: #232f3e;
margin: 10px 0;
}
.stat-label {
font-size: 1em;
color: #545b64;
}
.risk-card {
background: white;
border: 2px solid #e0e0e0;
border-left: 6px solid;
border-radius: 8px;
padding: 25px;
margin: 20px 0;
box-shadow: 0 4px 12px rgba(0,0,0,0.08);
transition: transform 0.2s ease;
}
.risk-card:hover {
transform: translateX(5px);
}
.risk-critical {
border-left-color: #d13212;
background: linear-gradient(to right, rgba(209,50,18,0.05) 0%, white 100%);
}
.risk-high {
border-left-color: #ff9900;
background: linear-gradient(to right, rgba(255,153,0,0.05) 0%, white 100%);
}
.risk-medium {
border-left-color: #f7b500;
background: linear-gradient(to right, rgba(247,181,0,0.05) 0%, white 100%);
}
.risk-low {
border-left-color: #1d8102;
background: linear-gradient(to right, rgba(29,129,2,0.05) 0%, white 100%);
}
.risk-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 15px;
}
.risk-title {
font-size: 1.3em;
font-weight: bold;
color: #232f3e;
}
.risk-badge {
display: inline-block;
padding: 6px 15px;
border-radius: 20px;
font-size: 0.9em;
font-weight: bold;
}
.badge-critical {
background: #d13212;
color: white;
}
.badge-high {
background: #ff9900;
color: white;
}
.badge-medium {
background: #f7b500;
color: #232f3e;
}
.badge-low {
background: #1d8102;
color: white;
}
.chart-container {
position: relative;
height: 500px;
margin: 30px auto;
background: white;
border-radius: 12px;
padding: 20px;
box-shadow: 0 4px 12px rgba(0,0,0,0.08);
}
.chart-row {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(500px, 1fr));
gap: 30px;
margin: 30px 0;
}
table {
width: 100%;
border-collapse: separate;
border-spacing: 0;
margin: 20px 0;
box-shadow: 0 4px 12px rgba(0,0,0,0.08);
border-radius: 8px;
overflow: hidden;
}
thead {
background: linear-gradient(135deg, #232f3e 0%, #37475a 100%);
color: white;
}
th {
padding: 15px;
text-align: left;
font-weight: bold;
font-size: 0.95em;
}
td {
padding: 12px 15px;
border-bottom: 1px solid #e0e0e0;
}
tbody tr {
transition: background-color 0.2s ease;
}
tbody tr:nth-child(even) {
background: #f8f9fa;
}
tbody tr:hover {
background: #fff3e0;
}
.mermaid {
background: white;
border-radius: 12px;
padding: 30px;
margin: 30px 0;
box-shadow: 0 4px 12px rgba(0,0,0,0.08);
}
.alert {
padding: 20px 25px;
margin: 20px 0;
border-radius: 8px;
border-left: 5px solid;
box-shadow: 0 2px 8px rgba(0,0,0,0.08);
}
.alert-danger {
background: #fff5f5;
border-color: #d13212;
color: #a02a1b;
}
.alert-warning {
background: #fff8e5;
border-color: #ff9900;
color: #995c00;
}
.alert-success {
background: #f0f8f0;
border-color: #1d8102;
color: #0d5201;
}
.alert-info {
background: #e7f3ff;
border-color: #0073bb;
color: #004876;
}
.recommendation-section {
background: linear-gradient(135deg, #f0f8ff 0%, #e7f3ff 100%);
border: 2px solid #0073bb;
border-radius: 12px;
padding: 25px;
margin: 30px 0;
}
.recommendation-section h3 {
color: #0073bb;
margin-top: 0;
}
code {
background: #f4f4f4;
padding: 3px 8px;
border-radius: 4px;
font-family: 'Courier New', monospace;
font-size: 0.9em;
color: #e01e5a;
}
pre {
background: #2d2d2d;
color: #f8f8f2;
padding: 20px;
border-radius: 8px;
overflow-x: auto;
border-left: 4px solid #ff9900;
box-shadow: 0 4px 12px rgba(0,0,0,0.15);
}
pre code {
background: none;
color: inherit;
padding: 0;
}
ul, ol {
margin: 15px 0 15px 30px;
}
li {
margin: 10px 0;
}
.footer {
background: #f8f9fa;
padding: 30px 40px;
text-align: center;
color: #545b64;
border-top: 3px solid #ff9900;
}
.progress-bar {
width: 100%;
height: 40px;
background: #e0e0e0;
border-radius: 20px;
overflow: hidden;
margin: 15px 0;
box-shadow: inset 0 2px 4px rgba(0,0,0,0.1);
}
.progress-fill {
height: 100%;
background: linear-gradient(90deg, #ff9900 0%, #ff8c00 100%);
display: flex;
align-items: center;
justify-content: center;
color: white;
font-weight: bold;
transition: width 1.5s ease;
box-shadow: 0 2px 8px rgba(255,140,0,0.4);
}
.timeline {
position: relative;
padding: 20px 0;
margin: 30px 0;
}
.timeline::before {
content: '';
position: absolute;
left: 30px;
top: 0;
bottom: 0;
width: 4px;
background: linear-gradient(to bottom, #ff9900, #ff8c00);
}
.timeline-item {
position: relative;
padding-left: 70px;
margin-bottom: 30px;
}
.timeline-marker {
position: absolute;
left: 20px;
width: 24px;
height: 24px;
background: white;
border: 4px solid #ff9900;
border-radius: 50%;
box-shadow: 0 2px 8px rgba(0,0,0,0.2);
}
.timeline-content {
background: white;
padding: 20px;
border-radius: 8px;
box-shadow: 0 2px 8px rgba(0,0,0,0.1);
}
@media print {
body {
background: white;
padding: 0;
}
.container {
box-shadow: none;
}
.chart-container, .risk-card {
page-break-inside: avoid;
}
.header::before, .score-banner::before {
display: none;
}
}
@media (max-width: 768px) {
.content {
padding: 20px;
}
h1 {
font-size: 1.8em;
}
h2 {
font-size: 1.5em;
}
.chart-row {
grid-template-columns: 1fr;
}
.dashboard {
grid-template-columns: 1fr;
}
.chart-container {
height: 300px;
}
}
/* 动画效果 */
@keyframes fadeInUp {
from {
opacity: 0;
transform: translateY(30px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
.fade-in-up {
animation: fadeInUp 0.6s ease-out;
}
/* 可折叠区域 */
details {
background: #f8f9fa;
border-radius: 8px;
padding: 15px;
margin: 15px 0;
border: 1px solid #e0e0e0;
}
summary {
font-weight: bold;
cursor: pointer;
color: #ff9900;
padding: 10px;
border-radius: 4px;
transition: background-color 0.2s ease;
}
summary:hover {
background: rgba(255,153,0,0.1);
}
details[open] summary {
margin-bottom: 15px;
border-bottom: 2px solid #ff9900;
}
/* 徽章系统 */
.badge-container {
display: flex;
flex-wrap: wrap;
gap: 10px;
margin: 15px 0;
}
.info-badge {
display: inline-flex;
align-items: center;
gap: 8px;
padding: 8px 15px;
border-radius: 20px;
font-size: 0.9em;
font-weight: 500;
box-shadow: 0 2px 6px rgba(0,0,0,0.1);
}
.badge-aws {
background: linear-gradient(135deg, #232f3e 0%, #37475a 100%);
color: white;
}
.badge-cost {
background: linear-gradient(135deg, #1d8102 0%, #2ea043 100%);
color: white;
}
.badge-time {
background: linear-gradient(135deg, #0073bb 0%, #0091ff 100%);
color: white;
}
</style>
</head>
<body>
<div class="container">
<div class="header">
<div class="header-content">
<h1>🛡️ AWS 系统韧性评估报告</h1>
<div class="subtitle">基于 AWS Well-Architected Framework 和 AWS 韧性分析框架</div>
<div class="meta-info">
<div class="meta-item">
<div class="meta-label">项目名称</div>
<div class="meta-value" id="project-name">-</div>
</div>
<div class="meta-item">
<div class="meta-label">评估日期</div>
<div class="meta-value" id="assessment-date">-</div>
</div>
<div class="meta-item">
<div class="meta-label">AWS 区域</div>
<div class="meta-value" id="aws-region">-</div>
</div>
<div class="meta-item">
<div class="meta-label">评估范围</div>
<div class="meta-value" id="assessment-scope">-</div>
</div>
</div>
</div>
</div>
<div class="content fade-in-up">
<!-- 总体成熟度评分 -->
<div class="score-banner">
<div class="score-banner-content">
<h2 style="margin: 0; border: none; padding: 0; color: white;">整体韧性成熟度</h2>
<div class="score-stars" id="maturity-stars">⭐⭐⭐⭐☆</div>
<div class="score-value" id="maturity-score">4.2</div>
<div style="font-size: 1.5em;">良好 (Good)</div>
</div>
</div>
<!-- 关键指标仪表板 -->
<h2>📊 执行摘要</h2>
<div class="dashboard">
<div class="stat-card">
<div class="stat-icon">🔍</div>
<div class="stat-value" id="total-risks">15</div>
<div class="stat-label">识别的风险</div>
</div>
<div class="stat-card">
<div class="stat-icon">🔴</div>
<div class="stat-value" id="critical-risks">3</div>
<div class="stat-label">关键风险</div>
</div>
<div class="stat-card">
<div class="stat-icon">⏱️</div>
<div class="stat-value" id="avg-rto">5min</div>
<div class="stat-label">平均 RTO</div>
</div>
<div class="stat-card">
<div class="stat-icon">💰</div>
<div class="stat-value" id="monthly-cost">$2.5K</div>
<div class="stat-label">月度成本影响</div>
</div>
</div>
<!-- 韧性评估雷达图 -->
<h3>📈 韧性评估维度</h3>
<div class="chart-container">
<canvas id="resilienceRadarChart"></canvas>
</div>
<!-- 风险分布图 -->
<h3>📊 风险分布</h3>
<div class="chart-row">
<div class="chart-container" style="height: 400px;">
<canvas id="riskDistributionChart"></canvas>
</div>
<div class="chart-container" style="height: 400px;">
<canvas id="riskPriorityChart"></canvas>
</div>
</div>
<!-- Top 5 关键风险 -->
<h2>🔴 Top 5 关键风险</h2>
<div class="risk-card risk-critical" id="risk-1">
<div class="risk-header">
<div class="risk-title">R-001: RDS 单区域部署</div>
<span class="risk-badge badge-critical">🔴 关键</span>
</div>
<p><strong>故障模式</strong>: 单点故障 (SPOF)</p>
<p><strong>业务影响</strong>: 区域故障导致完全服务中断,影响100%用户</p>
<p><strong>当前 RTO</strong>: 数小时</p>
<p><strong>目标 RTO</strong>: < 1分钟</p>
<div class="recommendation-section" style="margin-top: 15px;">
<h4 style="margin: 0 0 10px 0; color: #0073bb;">💡 改进建议</h4>
<p>实施 Aurora Global Database,实现跨区域自动故障转移</p>
<div class="badge-container">
<span class="info-badge badge-cost">成本: +$500-2000/月</span>
<span class="info-badge badge-time">实施: 2-3周</span>
<span class="info-badge badge-aws">Aurora Global DB</span>
</div>
</div>
</div>
<div class="risk-card risk-high">
<div class="risk-header">
<div class="risk-title">R-002: 缺少 Auto Scaling 配置</div>
<span class="risk-badge badge-high">🟠 高</span>
</div>
<p><strong>故障模式</strong>: 过度负载</p>
<p><strong>业务影响</strong>: 流量突增时服务降级,影响用户体验</p>
<p><strong>风险评分</strong>: 5.3 / 10</p>
<div class="recommendation-section" style="margin-top: 15px;">
<h4 style="margin: 0 0 10px 0; color: #0073bb;">💡 改进建议</h4>
<p>配置 Target Tracking Auto Scaling 和预测性扩展</p>
<div class="badge-container">
<span class="info-badge badge-cost">成本: 无额外成本</span>
<span class="info-badge badge-time">实施: 1周</span>
<span class="info-badge badge-aws">Auto Scaling</span>
</div>
</div>
</div>
<div class="risk-card risk-high">
<div class="risk-header">
<div class="risk-title">R-003: 缺少断路器机制</div>
<span class="risk-badge badge-high">🟠 高</span>
</div>
<p><strong>故障模式</strong>: 共享命运</p>
<p><strong>业务影响</strong>: 依赖服务故障导致级联失败</p>
<div class="recommendation-section" style="margin-top: 15px;">
<h4 style="margin: 0 0 10px 0; color: #0073bb;">💡 改进建议</h4>
<p>使用 AWS App Mesh 实现断路器和重试策略</p>
<div class="badge-container">
<span class="info-badge badge-cost">成本: ~$50/月</span>
<span class="info-badge badge-time">实施: 2-3周</span>
<span class="info-badge badge-aws">App Mesh</span>
</div>
</div>
</div>
<!-- 系统架构图 -->
<h2>🏗️ 系统架构可视化</h2>
<h3>当前架构</h3>
<div class="mermaid" id="architecture-diagram">
graph TB
subgraph "Region: us-east-1"
subgraph "AZ-1a"
EC2_1[EC2 Instances]
RDS_1[RDS Primary]
end
subgraph "AZ-1b"
EC2_2[EC2 Instances]
RDS_2[RDS Standby]
end
ALB[Application Load Balancer]
ALB --> EC2_1
ALB --> EC2_2
EC2_1 --> RDS_1
EC2_2 --> RDS_1
RDS_1 -.->|Replication| RDS_2
end
User[用户] --> ALB
</div>
<!-- 风险清单表格 -->
<h2>📋 完整风险清单</h2>
<table id="risk-table">
<thead>
<tr>
<th>风险 ID</th>
<th>故障模式</th>
<th>概率</th>
<th>影响</th>
<th>风险得分</th>
<th>优先级</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>R-001</strong></td>
<td>RDS 单区域部署</td>
<td>3/5</td>
<td>5/5</td>
<td>15.0</td>
<td><span class="risk-badge badge-critical">关键</span></td>
</tr>
<tr>
<td><strong>R-002</strong></td>
<td>缺少 Auto Scaling</td>
<td>4/5</td>
<td>4/5</td>
<td>5.3</td>
<td><span class="risk-badge badge-high">高</span></td>
</tr>
<tr>
<td><strong>R-003</strong></td>
<td>缺少断路器机制</td>
<td>3/5</td>
<td>4/5</td>
<td>4.0</td>
<td><span class="risk-badge badge-high">高</span></td>
</tr>
</tbody>
</table>
<!-- 实施路线图 -->
<h2>🗓️ 实施路线图</h2>
<div class="alert alert-info">
<strong>💡 分阶段实施建议</strong><br>
根据风险优先级和依赖关系,建议分3个阶段实施改进措施,总耗时约6个月。
</div>
<div class="timeline">
<div class="timeline-item">
<div class="timeline-marker"></div>
<div class="timeline-content">
<h4>第一阶段(0-2个月):基础韧性</h4>
<p><strong>关键任务:</strong></p>
<ul>
<li>RDS Multi-AZ 迁移</li>
<li>配置自动备份和恢复测试</li>
<li>实施基础监控和告警</li>
</ul>
<div class="progress-bar">
<div class="progress-fill" style="width: 0%;">0%</div>
</div>
</div>
</div>
<div class="timeline-item">
<div class="timeline-marker"></div>
<div class="timeline-content">
<h4>第二阶段(2-4个月):自动化与扩展</h4>
<p><strong>关键任务:</strong></p>
<ul>
<li>IaC 迁移(Terraform)</li>
<li>Auto Scaling 配置</li>
<li>CI/CD 流水线优化</li>
</ul>
<div class="progress-bar">
<div class="progress-fill" style="width: 0%;">0%</div>
</div>
</div>
</div>
<div class="timeline-item">
<div class="timeline-marker"></div>
<div class="timeline-content">
<h4>第三阶段(4-6个月):高级韧性</h4>
<p><strong>关键任务:</strong></p>
<ul>
<li>Aurora Global Database</li>
<li>混沌工程实验(AWS FIS)</li>
<li>SLO/SLI 跟踪和错误预算</li>
</ul>
<div class="progress-bar">
<div class="progress-fill" style="width: 0%;">0%</div>
</div>
</div>
</div>
</div>
<!-- 成本效益分析 -->
<h2>💰 成本效益分析</h2>
<div class="chart-container" style="height: 400px;">
<canvas id="costBenefitChart"></canvas>
</div>
<table>
<thead>
<tr>
<th>改进措施</th>
<th>成本影响</th>
<th>预期效果</th>
<th>ROI</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Aurora Global DB</strong></td>
<td>+$500-2000/月</td>
<td>RTO < 1分钟,RPO < 1秒</td>
<td class="badge-container"><span class="info-badge badge-cost">高</span></td>
</tr>
<tr>
<td><strong>Auto Scaling</strong></td>
<td>无额外成本</td>
<td>应对流量突增,提升用户体验</td>
<td class="badge-container"><span class="info-badge badge-cost">很高</span></td>
</tr>
<tr>
<td><strong>AWS FIS 测试</strong></td>
<td>~$100/月</td>
<td>验证韧性假设,提前发现问题</td>
<td class="badge-container"><span class="info-badge badge-cost">中</span></td>
</tr>
</tbody>
</table>
<!-- 持续改进计划 -->
<h2>🔄 持续改进计划</h2>
<div class="recommendation-section">
<h3>SLO/SLI 定义</h3>
<table>
<thead>
<tr>
<th>服务</th>
<th>SLI</th>
<th>SLO</th>
<th>错误预算</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Web 应用</strong></td>
<td>请求成功率</td>
<td>99.9%</td>
<td>43.2 分钟/月</td>
</tr>
<tr>
<td><strong>API</strong></td>
<td>P95 延迟</td>
<td>< 200ms (99.5%)</td>
<td>3.6 小时/月</td>
</tr>
<tr>
<td><strong>数据库</strong></td>
<td>可用性</td>
<td>99.95%</td>
<td>21.6 分钟/月</td>
</tr>
</tbody>
</table>
</div>
<details>
<summary>📚 查看事后复盘流程模板</summary>
<div style="padding: 15px;">
<h4>无责任文化原则</h4>
<ul>
<li>专注于系统问题,而非个人过失</li>
<li>鼓励透明和诚实</li>
<li>从故障中学习</li>
</ul>
<h4>复盘必含要素</h4>
<ul>
<li>事故时间线</li>
<li>根因分析(5 Whys)</li>
<li>影响评估</li>
<li>做得好的地方</li>
<li>需要改进的地方</li>
<li>行动项(带负责人和截止日期)</li>
</ul>
</div>
</details>
<!-- 参考资源 -->
<h2>📚 参考资源</h2>
<div class="alert alert-info">
<strong>AWS 官方文档</strong>
<ul style="margin: 10px 0 0 20px;">
<li><a href="https://docs.aws.amazon.com/prescriptive-guidance/latest/resilience-analysis-framework/" target="_blank">AWS Resilience Analysis Framework</a></li>
<li><a href="https://docs.aws.amazon.com/wellarchitected/latest/reliability-pillar/" target="_blank">AWS Well-Architected - Reliability Pillar</a></li>
<li><a href="https://docs.aws.amazon.com/fis/latest/userguide/" target="_blank">AWS Fault Injection Simulator</a></li>
<li><a href="https://docs.aws.amazon.com/resilience-hub/latest/userguide/" target="_blank">AWS Resilience Hub</a></li>
</ul>
</div>
<div class="alert alert-success">
<strong>业界最佳实践</strong>
<ul style="margin: 10px 0 0 20px;">
<li><a href="https://aws-observability.github.io/observability-best-practices/" target="_blank">AWS Observability Best Practices</a></li>
<li><a href="https://principlesofchaos.org/" target="_blank">Chaos Engineering Principles</a></li>
<li><a href="https://docs.aws.amazon.com/prescriptive-guidance/latest/chaos-engineering-on-aws/" target="_blank">Chaos Engineering on AWS</a></li>
</ul>
</div>
</div>
<div class="footer">
<p><strong>报告生成日期</strong>: <span id="report-date">-</span></p>
<p><strong>评估框架</strong>: AWS Well-Architected Framework + AWS 韧性分析框架</p>
<p><strong>工具版本</strong>: AWS Resilience Assessment v1.0.0</p>
<p style="margin-top: 20px; color: #999;">
🤖 Powered by <a href="https://claude.ai" target="_blank" style="color: #ff9900;">Claude Sonnet 4.5</a>
</p>
</div>
</div>
<script>
// 初始化 Mermaid
mermaid.initialize({
startOnLoad: true,
theme: 'default',
themeVariables: {
primaryColor: '#ff9900',
primaryTextColor: '#232f3e',
primaryBorderColor: '#ff8c00',
lineColor: '#ff9900',
secondaryColor: '#f8f9fa',
tertiaryColor: '#fff'
}
});
// 设置报告日期
document.getElementById('report-date').textContent = new Date().toLocaleDateString('zh-CN');
// 韧性评估雷达图
const radarCtx = document.getElementById('resilienceRadarChart').getContext('2d');
new Chart(radarCtx, {
type: 'radar',
data: {
labels: [
'冗余设计',
'AZ 容错',
'超时与重试',
'断路器',
'自动扩展',
'配置防护',
'故障隔离',
'备份恢复',
'最佳实践'
],
datasets: [{
label: '当前状态',
data: [3, 3, 2, 1, 2, 3, 2, 3, 3],
backgroundColor: 'rgba(255, 153, 0, 0.2)',
borderColor: 'rgb(255, 153, 0)',
borderWidth: 3,
pointBackgroundColor: 'rgb(255, 153, 0)',
pointBorderColor: '#fff',
pointHoverBackgroundColor: '#fff',
pointHoverBorderColor: 'rgb(255, 153, 0)',
pointRadius: 5,
pointHoverRadius: 7
}, {
label: '目标状态',
data: [5, 5, 5, 5, 5, 5, 5, 5, 5],
backgroundColor: 'rgba(29, 129, 2, 0.1)',
borderColor: 'rgb(29, 129, 2)',
borderWidth: 2,
borderDash: [5, 5],
pointBackgroundColor: 'rgb(29, 129, 2)',
pointBorderColor: '#fff',
pointRadius: 3
}]
},
options: {
responsive: true,
maintainAspectRatio: true,
scales: {
r: {
beginAtZero: true,
max: 5,
ticks: {
stepSize: 1,
callback: function(value) {
return value + '⭐';
},
font: { size: 12 }
},
pointLabels: {
font: {
size: 13,
weight: 'bold'
}
}
}
},
plugins: {
legend: {
position: 'bottom',
labels: {
padding: 20,
font: { size: 14 }
}
},
title: {
display: true,
text: '韧性评估维度(当前 vs 目标)',
font: {
size: 16,
weight: 'bold'
},
padding: { bottom: 20 }
}
}
}
});
// 风险分布图(按类别)
const distCtx = document.getElementById('riskDistributionChart').getContext('2d');
new Chart(distCtx, {
type: 'doughnut',
data: {
labels: ['单点故障', '过度延迟', '过度负载', '错误配置', '共享命运'],
datasets: [{
data: [5, 2, 3, 3, 2],
backgroundColor: [
'rgb(209, 50, 18)',
'rgb(255, 153, 0)',
'rgb(247, 181, 0)',
'rgb(29, 129, 2)',
'rgb(0, 115, 187)'
],
borderWidth: 2,
borderColor: '#fff'
}]
},
options: {
responsive: true,
maintainAspectRatio: true,
plugins: {
legend: {
position: 'right',
labels: { font: { size: 13 }, padding: 15 }
},
title: {
display: true,
text: '风险类别分布',
font: { size: 16, weight: 'bold' }
}
}
}
});
// 风险优先级图
const priorityCtx = document.getElementById('riskPriorityChart').getContext('2d');
new Chart(priorityCtx, {
type: 'bar',
data: {
labels: ['关键', '高', '中', '低'],
datasets: [{
label: '风险数量',
data: [3, 5, 4, 3],
backgroundColor: [
'rgb(209, 50, 18)',
'rgb(255, 153, 0)',
'rgb(247, 181, 0)',
'rgb(29, 129, 2)'
],
borderWidth: 0
}]
},
options: {
responsive: true,
maintainAspectRatio: true,
scales: {
y: {
beginAtZero: true,
ticks: { stepSize: 1 }
}
},
plugins: {
legend: { display: false },
title: {
display: true,
text: '风险优先级分布',
font: { size: 16, weight: 'bold' }
}
}
}
});
// 成本效益分析图
const costCtx = document.getElementById('costBenefitChart').getContext('2d');
new Chart(costCtx, {
type: 'scatter',
data: {
datasets: [{
label: 'Aurora Global DB',
data: [{ x: 1500, y: 5 }],
backgroundColor: 'rgb(209, 50, 18)',
pointRadius: 15
}, {
label: 'Auto Scaling',
data: [{ x: 0, y: 4.5 }],
backgroundColor: 'rgb(29, 129, 2)',
pointRadius: 15
}, {
label: 'AWS FIS',
data: [{ x: 100, y: 3 }],
backgroundColor: 'rgb(255, 153, 0)',
pointRadius: 12
}, {
label: 'App Mesh',
data: [{ x: 50, y: 4 }],
backgroundColor: 'rgb(0, 115, 187)',
pointRadius: 12
}]
},
options: {
responsive: true,
maintainAspectRatio: true,
scales: {
x: {
title: {
display: true,
text: '月度成本影响 ($)',
font: { size: 14, weight: 'bold' }
}
},
y: {
title: {
display: true,
text: '业务价值 (1-5)',
font: { size: 14, weight: 'bold' }
},
min: 0,
max: 5
}
},
plugins: {
title: {
display: true,
text: '成本 vs 业务价值',
font: { size: 16, weight: 'bold' }
},
tooltip: {
callbacks: {
label: function(context) {
return context.dataset.label + ': $' + context.parsed.x + '/月, 价值=' + context.parsed.y;
}
}
}
}
}
});
// 动画进度条
setTimeout(() => {
document.querySelectorAll('.progress-fill').forEach((bar, index) => {
setTimeout(() => {
const values = [0, 0, 0]; // 初始都是0%,可以根据实际进度更新
bar.style.width = values[index] + '%';
bar.textContent = values[index] + '%';
}, index * 300);
});
}, 500);
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>AWS System Resilience Assessment Report</title>
<script src="https://cdn.jsdelivr.net/npm/chart.js@4.4.0/dist/chart.umd.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.min.js"></script>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
line-height: 1.6;
color: #232f3e;
background: linear-gradient(135deg, #f5f5f5 0%, #e9ecef 100%);
padding: 20px;
}
.container {
max-width: 1400px;
margin: 0 auto;
background: white;
box-shadow: 0 4px 20px rgba(0,0,0,0.1);
border-radius: 12px;
overflow: hidden;
}
.header {
background: linear-gradient(135deg, #232f3e 0%, #37475a 100%);
color: white;
padding: 40px;
position: relative;
overflow: hidden;
}
.header::before {
content: '';
position: absolute;
top: -50%;
right: -50%;
width: 200%;
height: 200%;
background: radial-gradient(circle, rgba(255,153,0,0.1) 0%, transparent 70%);
animation: pulse 15s ease-in-out infinite;
}
@keyframes pulse {
0%, 100% { transform: scale(1); }
50% { transform: scale(1.1); }
}
.header-content {
position: relative;
z-index: 1;
}
h1 {
font-size: 2.5em;
margin-bottom: 10px;
color: white;
}
.subtitle {
font-size: 1.2em;
opacity: 0.9;
margin-bottom: 20px;
}
.meta-info {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
gap: 15px;
margin-top: 20px;
}
.meta-item {
background: rgba(255,255,255,0.1);
padding: 10px 15px;
border-radius: 8px;
backdrop-filter: blur(10px);
}
.meta-label {
font-size: 0.85em;
opacity: 0.8;
margin-bottom: 5px;
}
.meta-value {
font-size: 1.1em;
font-weight: bold;
}
.content {
padding: 40px;
}
h2 {
color: #232f3e;
font-size: 2em;
margin-top: 40px;
margin-bottom: 20px;
padding-left: 15px;
border-left: 5px solid #ff9900;
}
h3 {
color: #232f3e;
font-size: 1.5em;
margin-top: 30px;
margin-bottom: 15px;
}
h4 {
color: #545b64;
font-size: 1.2em;
margin-top: 20px;
margin-bottom: 10px;
}
.score-banner {
background: linear-gradient(135deg, #ff9900 0%, #ff8c00 100%);
color: white;
padding: 40px;
border-radius: 12px;
text-align: center;
margin: 30px 0;
box-shadow: 0 6px 20px rgba(255,140,0,0.3);
position: relative;
overflow: hidden;
}
.score-banner::before {
content: '';
position: absolute;
top: -50%;
left: -50%;
width: 200%;
height: 200%;
background: radial-gradient(circle, rgba(255,255,255,0.2) 0%, transparent 70%);
}
.score-banner-content {
position: relative;
z-index: 1;
}
.score-value {
font-size: 5em;
font-weight: bold;
margin: 20px 0;
text-shadow: 2px 2px 4px rgba(0,0,0,0.2);
}
.score-stars {
font-size: 3em;
margin: 10px 0;
}
.dashboard {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
gap: 20px;
margin: 30px 0;
}
.stat-card {
background: linear-gradient(135deg, white 0%, #f8f9fa 100%);
border: 2px solid #e0e0e0;
border-radius: 12px;
padding: 25px;
text-align: center;
box-shadow: 0 4px 15px rgba(0,0,0,0.08);
transition: transform 0.3s ease, box-shadow 0.3s ease;
position: relative;
overflow: hidden;
}
.stat-card::before {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 4px;
background: linear-gradient(90deg, #ff9900 0%, #ff8c00 100%);
}
.stat-card:hover {
transform: translateY(-5px);
box-shadow: 0 8px 25px rgba(0,0,0,0.15);
}
.stat-icon {
font-size: 3em;
margin-bottom: 15px;
}
.stat-value {
font-size: 2.5em;
font-weight: bold;
color: #232f3e;
margin: 10px 0;
}
.stat-label {
font-size: 1em;
color: #545b64;
}
.risk-card {
background: white;
border: 2px solid #e0e0e0;
border-left: 6px solid;
border-radius: 8px;
padding: 25px;
margin: 20px 0;
box-shadow: 0 4px 12px rgba(0,0,0,0.08);
transition: transform 0.2s ease;
}
.risk-card:hover {
transform: translateX(5px);
}
.risk-critical {
border-left-color: #d13212;
background: linear-gradient(to right, rgba(209,50,18,0.05) 0%, white 100%);
}
.risk-high {
border-left-color: #ff9900;
background: linear-gradient(to right, rgba(255,153,0,0.05) 0%, white 100%);
}
.risk-medium {
border-left-color: #f7b500;
background: linear-gradient(to right, rgba(247,181,0,0.05) 0%, white 100%);
}
.risk-low {
border-left-color: #1d8102;
background: linear-gradient(to right, rgba(29,129,2,0.05) 0%, white 100%);
}
.risk-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 15px;
}
.risk-title {
font-size: 1.3em;
font-weight: bold;
color: #232f3e;
}
.risk-badge {
display: inline-block;
padding: 6px 15px;
border-radius: 20px;
font-size: 0.9em;
font-weight: bold;
}
.badge-critical {
background: #d13212;
color: white;
}
.badge-high {
background: #ff9900;
color: white;
}
.badge-medium {
background: #f7b500;
color: #232f3e;
}
.badge-low {
background: #1d8102;
color: white;
}
.chart-container {
position: relative;
height: 500px;
margin: 30px auto;
background: white;
border-radius: 12px;
padding: 20px;
box-shadow: 0 4px 12px rgba(0,0,0,0.08);
}
.chart-row {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(500px, 1fr));
gap: 30px;
margin: 30px 0;
}
table {
width: 100%;
border-collapse: separate;
border-spacing: 0;
margin: 20px 0;
box-shadow: 0 4px 12px rgba(0,0,0,0.08);
border-radius: 8px;
overflow: hidden;
}
thead {
background: linear-gradient(135deg, #232f3e 0%, #37475a 100%);
color: white;
}
th {
padding: 15px;
text-align: left;
font-weight: bold;
font-size: 0.95em;
}
td {
padding: 12px 15px;
border-bottom: 1px solid #e0e0e0;
}
tbody tr {
transition: background-color 0.2s ease;
}
tbody tr:nth-child(even) {
background: #f8f9fa;
}
tbody tr:hover {
background: #fff3e0;
}
.mermaid {
background: white;
border-radius: 12px;
padding: 30px;
margin: 30px 0;
box-shadow: 0 4px 12px rgba(0,0,0,0.08);
}
.alert {
padding: 20px 25px;
margin: 20px 0;
border-radius: 8px;
border-left: 5px solid;
box-shadow: 0 2px 8px rgba(0,0,0,0.08);
}
.alert-danger {
background: #fff5f5;
border-color: #d13212;
color: #a02a1b;
}
.alert-warning {
background: #fff8e5;
border-color: #ff9900;
color: #995c00;
}
.alert-success {
background: #f0f8f0;
border-color: #1d8102;
color: #0d5201;
}
.alert-info {
background: #e7f3ff;
border-color: #0073bb;
color: #004876;
}
.recommendation-section {
background: linear-gradient(135deg, #f0f8ff 0%, #e7f3ff 100%);
border: 2px solid #0073bb;
border-radius: 12px;
padding: 25px;
margin: 30px 0;
}
.recommendation-section h3 {
color: #0073bb;
margin-top: 0;
}
code {
background: #f4f4f4;
padding: 3px 8px;
border-radius: 4px;
font-family: 'Courier New', monospace;
font-size: 0.9em;
color: #e01e5a;
}
pre {
background: #2d2d2d;
color: #f8f8f2;
padding: 20px;
border-radius: 8px;
overflow-x: auto;
border-left: 4px solid #ff9900;
box-shadow: 0 4px 12px rgba(0,0,0,0.15);
}
pre code {
background: none;
color: inherit;
padding: 0;
}
ul, ol {
margin: 15px 0 15px 30px;
}
li {
margin: 10px 0;
}
.footer {
background: #f8f9fa;
padding: 30px 40px;
text-align: center;
color: #545b64;
border-top: 3px solid #ff9900;
}
.progress-bar {
width: 100%;
height: 40px;
background: #e0e0e0;
border-radius: 20px;
overflow: hidden;
margin: 15px 0;
box-shadow: inset 0 2px 4px rgba(0,0,0,0.1);
}
.progress-fill {
height: 100%;
background: linear-gradient(90deg, #ff9900 0%, #ff8c00 100%);
display: flex;
align-items: center;
justify-content: center;
color: white;
font-weight: bold;
transition: width 1.5s ease;
box-shadow: 0 2px 8px rgba(255,140,0,0.4);
}
.timeline {
position: relative;
padding: 20px 0;
margin: 30px 0;
}
.timeline::before {
content: '';
position: absolute;
left: 30px;
top: 0;
bottom: 0;
width: 4px;
background: linear-gradient(to bottom, #ff9900, #ff8c00);
}
.timeline-item {
position: relative;
padding-left: 70px;
margin-bottom: 30px;
}
.timeline-marker {
position: absolute;
left: 20px;
width: 24px;
height: 24px;
background: white;
border: 4px solid #ff9900;
border-radius: 50%;
box-shadow: 0 2px 8px rgba(0,0,0,0.2);
}
.timeline-content {
background: white;
padding: 20px;
border-radius: 8px;
box-shadow: 0 2px 8px rgba(0,0,0,0.1);
}
@media print {
body {
background: white;
padding: 0;
}
.container {
box-shadow: none;
}
.chart-container, .risk-card {
page-break-inside: avoid;
}
.header::before, .score-banner::before {
display: none;
}
}
@media (max-width: 768px) {
.content {
padding: 20px;
}
h1 {
font-size: 1.8em;
}
h2 {
font-size: 1.5em;
}
.chart-row {
grid-template-columns: 1fr;
}
.dashboard {
grid-template-columns: 1fr;
}
.chart-container {
height: 300px;
}
}
/* Animations */
@keyframes fadeInUp {
from {
opacity: 0;
transform: translateY(30px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
.fade-in-up {
animation: fadeInUp 0.6s ease-out;
}
/* Collapsible sections */
details {
background: #f8f9fa;
border-radius: 8px;
padding: 15px;
margin: 15px 0;
border: 1px solid #e0e0e0;
}
summary {
font-weight: bold;
cursor: pointer;
color: #ff9900;
padding: 10px;
border-radius: 4px;
transition: background-color 0.2s ease;
}
summary:hover {
background: rgba(255,153,0,0.1);
}
details[open] summary {
margin-bottom: 15px;
border-bottom: 2px solid #ff9900;
}
/* Badge system */
.badge-container {
display: flex;
flex-wrap: wrap;
gap: 10px;
margin: 15px 0;
}
.info-badge {
display: inline-flex;
align-items: center;
gap: 8px;
padding: 8px 15px;
border-radius: 20px;
font-size: 0.9em;
font-weight: 500;
box-shadow: 0 2px 6px rgba(0,0,0,0.1);
}
.badge-aws {
background: linear-gradient(135deg, #232f3e 0%, #37475a 100%);
color: white;
}
.badge-cost {
background: linear-gradient(135deg, #1d8102 0%, #2ea043 100%);
color: white;
}
.badge-time {
background: linear-gradient(135deg, #0073bb 0%, #0091ff 100%);
color: white;
}
</style>
</head>
<body>
<div class="container">
<div class="header">
<div class="header-content">
<h1>AWS System Resilience Assessment Report</h1>
<div class="subtitle">Based on AWS Well-Architected Framework and AWS Resilience Analysis Framework</div>
<div class="meta-info">
<div class="meta-item">
<div class="meta-label">Project Name</div>
<div class="meta-value" id="project-name">-</div>
</div>
<div class="meta-item">
<div class="meta-label">Assessment Date</div>
<div class="meta-value" id="assessment-date">-</div>
</div>
<div class="meta-item">
<div class="meta-label">AWS Region</div>
<div class="meta-value" id="aws-region">-</div>
</div>
<div class="meta-item">
<div class="meta-label">Assessment Scope</div>
<div class="meta-value" id="assessment-scope">-</div>
</div>
</div>
</div>
</div>
<div class="content fade-in-up">
<!-- Overall Maturity Score -->
<div class="score-banner">
<div class="score-banner-content">
<h2 style="margin: 0; border: none; padding: 0; color: white;">Overall Resilience Maturity</h2>
<div class="score-stars" id="maturity-stars">⭐⭐⭐⭐☆</div>
<div class="score-value" id="maturity-score">4.2</div>
<div style="font-size: 1.5em;">Good</div>
</div>
</div>
<!-- Key Metrics Dashboard -->
<h2>Executive Summary</h2>
<div class="dashboard">
<div class="stat-card">
<div class="stat-icon">🔍</div>
<div class="stat-value" id="total-risks">15</div>
<div class="stat-label">Identified Risks</div>
</div>
<div class="stat-card">
<div class="stat-icon">🔴</div>
<div class="stat-value" id="critical-risks">3</div>
<div class="stat-label">Critical Risks</div>
</div>
<div class="stat-card">
<div class="stat-icon">⏱️</div>
<div class="stat-value" id="avg-rto">5min</div>
<div class="stat-label">Average RTO</div>
</div>
<div class="stat-card">
<div class="stat-icon">💰</div>
<div class="stat-value" id="monthly-cost">$2.5K</div>
<div class="stat-label">Monthly Cost Impact</div>
</div>
</div>
<!-- Resilience Assessment Radar Chart -->
<h3>Resilience Assessment Dimensions</h3>
<div class="chart-container">
<canvas id="resilienceRadarChart"></canvas>
</div>
<!-- Risk Distribution Charts -->
<h3>Risk Distribution</h3>
<div class="chart-row">
<div class="chart-container" style="height: 400px;">
<canvas id="riskDistributionChart"></canvas>
</div>
<div class="chart-container" style="height: 400px;">
<canvas id="riskPriorityChart"></canvas>
</div>
</div>
<!-- Top 5 Critical Risks -->
<h2>Top 5 Critical Risks</h2>
<div class="risk-card risk-critical" id="risk-1">
<div class="risk-header">
<div class="risk-title">R-001: RDS Single-Region Deployment</div>
<span class="risk-badge badge-critical">CRITICAL</span>
</div>
<p><strong>Failure Mode</strong>: Single Point of Failure (SPOF)</p>
<p><strong>Business Impact</strong>: Regional failure causes complete service outage, affecting 100% of users</p>
<p><strong>Current RTO</strong>: Hours</p>
<p><strong>Target RTO</strong>: < 1 minute</p>
<div class="recommendation-section" style="margin-top: 15px;">
<h4 style="margin: 0 0 10px 0; color: #0073bb;">Recommendation</h4>
<p>Implement Aurora Global Database for cross-region automatic failover</p>
<div class="badge-container">
<span class="info-badge badge-cost">Cost: +$500-2000/mo</span>
<span class="info-badge badge-time">Timeline: 2-3 weeks</span>
<span class="info-badge badge-aws">Aurora Global DB</span>
</div>
</div>
</div>
<div class="risk-card risk-high">
<div class="risk-header">
<div class="risk-title">R-002: Missing Auto Scaling Configuration</div>
<span class="risk-badge badge-high">HIGH</span>
</div>
<p><strong>Failure Mode</strong>: Excessive Load</p>
<p><strong>Business Impact</strong>: Service degradation during traffic spikes, affecting user experience</p>
<p><strong>Risk Score</strong>: 5.3 / 10</p>
<div class="recommendation-section" style="margin-top: 15px;">
<h4 style="margin: 0 0 10px 0; color: #0073bb;">Recommendation</h4>
<p>Configure Target Tracking Auto Scaling with predictive scaling</p>
<div class="badge-container">
<span class="info-badge badge-cost">Cost: No additional cost</span>
<span class="info-badge badge-time">Timeline: 1 week</span>
<span class="info-badge badge-aws">Auto Scaling</span>
</div>
</div>
</div>
<div class="risk-card risk-high">
<div class="risk-header">
<div class="risk-title">R-003: Missing Circuit Breaker</div>
<span class="risk-badge badge-high">HIGH</span>
</div>
<p><strong>Failure Mode</strong>: Shared Fate</p>
<p><strong>Business Impact</strong>: Dependency failures cause cascading failures</p>
<div class="recommendation-section" style="margin-top: 15px;">
<h4 style="margin: 0 0 10px 0; color: #0073bb;">Recommendation</h4>
<p>Implement circuit breaker and retry policies using AWS App Mesh</p>
<div class="badge-container">
<span class="info-badge badge-cost">Cost: ~$50/mo</span>
<span class="info-badge badge-time">Timeline: 2-3 weeks</span>
<span class="info-badge badge-aws">App Mesh</span>
</div>
</div>
</div>
<!-- System Architecture Diagram -->
<h2>System Architecture Visualization</h2>
<h3>Current Architecture</h3>
<div class="mermaid" id="architecture-diagram">
graph TB
subgraph "Region: us-east-1"
subgraph "AZ-1a"
EC2_1[EC2 Instances]
RDS_1[RDS Primary]
end
subgraph "AZ-1b"
EC2_2[EC2 Instances]
RDS_2[RDS Standby]
end
ALB[Application Load Balancer]
ALB --> EC2_1
ALB --> EC2_2
EC2_1 --> RDS_1
EC2_2 --> RDS_1
RDS_1 -.->|Replication| RDS_2
end
User[Users] --> ALB
</div>
<!-- Risk Inventory Table -->
<h2>Complete Risk Inventory</h2>
<table id="risk-table">
<thead>
<tr>
<th>Risk ID</th>
<th>Failure Mode</th>
<th>Probability</th>
<th>Impact</th>
<th>Risk Score</th>
<th>Priority</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>R-001</strong></td>
<td>RDS Single-Region Deployment</td>
<td>3/5</td>
<td>5/5</td>
<td>15.0</td>
<td><span class="risk-badge badge-critical">Critical</span></td>
</tr>
<tr>
<td><strong>R-002</strong></td>
<td>Missing Auto Scaling</td>
<td>4/5</td>
<td>4/5</td>
<td>5.3</td>
<td><span class="risk-badge badge-high">High</span></td>
</tr>
<tr>
<td><strong>R-003</strong></td>
<td>Missing Circuit Breaker</td>
<td>3/5</td>
<td>4/5</td>
<td>4.0</td>
<td><span class="risk-badge badge-high">High</span></td>
</tr>
</tbody>
</table>
<!-- Implementation Roadmap -->
<h2>Implementation Roadmap</h2>
<div class="alert alert-info">
<strong>Phased Implementation Recommendation</strong><br>
Based on risk priority and dependencies, a 3-phase implementation plan is recommended, spanning approximately 6 months.
</div>
<div class="timeline">
<div class="timeline-item">
<div class="timeline-marker"></div>
<div class="timeline-content">
<h4>Phase 1 (0-2 months): Foundation Resilience</h4>
<p><strong>Key Tasks:</strong></p>
<ul>
<li>RDS Multi-AZ migration</li>
<li>Configure automated backup and recovery testing</li>
<li>Implement baseline monitoring and alerting</li>
</ul>
<div class="progress-bar">
<div class="progress-fill" style="width: 0%;">0%</div>
</div>
</div>
</div>
<div class="timeline-item">
<div class="timeline-marker"></div>
<div class="timeline-content">
<h4>Phase 2 (2-4 months): Automation & Scaling</h4>
<p><strong>Key Tasks:</strong></p>
<ul>
<li>IaC migration (Terraform)</li>
<li>Auto Scaling configuration</li>
<li>CI/CD pipeline optimization</li>
</ul>
<div class="progress-bar">
<div class="progress-fill" style="width: 0%;">0%</div>
</div>
</div>
</div>
<div class="timeline-item">
<div class="timeline-marker"></div>
<div class="timeline-content">
<h4>Phase 3 (4-6 months): Advanced Resilience</h4>
<p><strong>Key Tasks:</strong></p>
<ul>
<li>Aurora Global Database</li>
<li>Chaos engineering experiments (AWS FIS)</li>
<li>SLO/SLI tracking and error budgets</li>
</ul>
<div class="progress-bar">
<div class="progress-fill" style="width: 0%;">0%</div>
</div>
</div>
</div>
</div>
<!-- Cost-Benefit Analysis -->
<h2>Cost-Benefit Analysis</h2>
<div class="chart-container" style="height: 400px;">
<canvas id="costBenefitChart"></canvas>
</div>
<table>
<thead>
<tr>
<th>Improvement</th>
<th>Cost Impact</th>
<th>Expected Outcome</th>
<th>ROI</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Aurora Global DB</strong></td>
<td>+$500-2000/mo</td>
<td>RTO < 1 min, RPO < 1 sec</td>
<td class="badge-container"><span class="info-badge badge-cost">High</span></td>
</tr>
<tr>
<td><strong>Auto Scaling</strong></td>
<td>No additional cost</td>
<td>Handle traffic spikes, improve user experience</td>
<td class="badge-container"><span class="info-badge badge-cost">Very High</span></td>
</tr>
<tr>
<td><strong>AWS FIS Testing</strong></td>
<td>~$100/mo</td>
<td>Validate resilience assumptions, discover issues early</td>
<td class="badge-container"><span class="info-badge badge-cost">Medium</span></td>
</tr>
</tbody>
</table>
<!-- Continuous Improvement Plan -->
<h2>Continuous Improvement Plan</h2>
<div class="recommendation-section">
<h3>SLO/SLI Definitions</h3>
<table>
<thead>
<tr>
<th>Service</th>
<th>SLI</th>
<th>SLO</th>
<th>Error Budget</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Web Application</strong></td>
<td>Request Success Rate</td>
<td>99.9%</td>
<td>43.2 min/month</td>
</tr>
<tr>
<td><strong>API</strong></td>
<td>P95 Latency</td>
<td>< 200ms (99.5%)</td>
<td>3.6 hours/month</td>
</tr>
<tr>
<td><strong>Database</strong></td>
<td>Availability</td>
<td>99.95%</td>
<td>21.6 min/month</td>
</tr>
</tbody>
</table>
</div>
<details>
<summary>View Post-Incident Review Template</summary>
<div style="padding: 15px;">
<h4>Blameless Culture Principles</h4>
<ul>
<li>Focus on systemic issues, not individual blame</li>
<li>Encourage transparency and honesty</li>
<li>Learn from failures</li>
</ul>
<h4>Required Review Elements</h4>
<ul>
<li>Incident timeline</li>
<li>Root cause analysis (5 Whys)</li>
<li>Impact assessment</li>
<li>What went well</li>
<li>Areas for improvement</li>
<li>Action items (with owners and deadlines)</li>
</ul>
</div>
</details>
<!-- Reference Resources -->
<h2>Reference Resources</h2>
<div class="alert alert-info">
<strong>AWS Official Documentation</strong>
<ul style="margin: 10px 0 0 20px;">
<li><a href="https://docs.aws.amazon.com/prescriptive-guidance/latest/resilience-analysis-framework/" target="_blank">AWS Resilience Analysis Framework</a></li>
<li><a href="https://docs.aws.amazon.com/wellarchitected/latest/reliability-pillar/" target="_blank">AWS Well-Architected - Reliability Pillar</a></li>
<li><a href="https://docs.aws.amazon.com/fis/latest/userguide/" target="_blank">AWS Fault Injection Simulator</a></li>
<li><a href="https://docs.aws.amazon.com/resilience-hub/latest/userguide/" target="_blank">AWS Resilience Hub</a></li>
</ul>
</div>
<div class="alert alert-success">
<strong>Industry Best Practices</strong>
<ul style="margin: 10px 0 0 20px;">
<li><a href="https://aws-observability.github.io/observability-best-practices/" target="_blank">AWS Observability Best Practices</a></li>
<li><a href="https://principlesofchaos.org/" target="_blank">Chaos Engineering Principles</a></li>
<li><a href="https://docs.aws.amazon.com/prescriptive-guidance/latest/chaos-engineering-on-aws/" target="_blank">Chaos Engineering on AWS</a></li>
</ul>
</div>
</div>
<div class="footer">
<p><strong>Report Generated</strong>: <span id="report-date">-</span></p>
<p><strong>Assessment Framework</strong>: AWS Well-Architected Framework + AWS Resilience Analysis Framework</p>
<p><strong>Tool Version</strong>: AWS Resilience Assessment v1.0.0</p>
</div>
</div>
<script>
// Initialize Mermaid
mermaid.initialize({
startOnLoad: true,
theme: 'default',
themeVariables: {
primaryColor: '#ff9900',
primaryTextColor: '#232f3e',
primaryBorderColor: '#ff8c00',
lineColor: '#ff9900',
secondaryColor: '#f8f9fa',
tertiaryColor: '#fff'
}
});
// Set report date
document.getElementById('report-date').textContent = new Date().toLocaleDateString('en-US');
// Resilience Assessment Radar Chart
const radarCtx = document.getElementById('resilienceRadarChart').getContext('2d');
new Chart(radarCtx, {
type: 'radar',
data: {
labels: [
'Redundancy Design',
'AZ Fault Tolerance',
'Timeout & Retry',
'Circuit Breaker',
'Auto Scaling',
'Config Protection',
'Fault Isolation',
'Backup & Recovery',
'Best Practices'
],
datasets: [{
label: 'Current State',
data: [3, 3, 2, 1, 2, 3, 2, 3, 3],
backgroundColor: 'rgba(255, 153, 0, 0.2)',
borderColor: 'rgb(255, 153, 0)',
borderWidth: 3,
pointBackgroundColor: 'rgb(255, 153, 0)',
pointBorderColor: '#fff',
pointHoverBackgroundColor: '#fff',
pointHoverBorderColor: 'rgb(255, 153, 0)',
pointRadius: 5,
pointHoverRadius: 7
}, {
label: 'Target State',
data: [5, 5, 5, 5, 5, 5, 5, 5, 5],
backgroundColor: 'rgba(29, 129, 2, 0.1)',
borderColor: 'rgb(29, 129, 2)',
borderWidth: 2,
borderDash: [5, 5],
pointBackgroundColor: 'rgb(29, 129, 2)',
pointBorderColor: '#fff',
pointRadius: 3
}]
},
options: {
responsive: true,
maintainAspectRatio: true,
scales: {
r: {
beginAtZero: true,
max: 5,
ticks: {
stepSize: 1,
font: { size: 12 }
},
pointLabels: {
font: {
size: 13,
weight: 'bold'
}
}
}
},
plugins: {
legend: {
position: 'bottom',
labels: {
padding: 20,
font: { size: 14 }
}
},
title: {
display: true,
text: 'Resilience Dimensions (Current vs Target)',
font: {
size: 16,
weight: 'bold'
},
padding: { bottom: 20 }
}
}
}
});
// Risk Distribution Chart (by category)
const distCtx = document.getElementById('riskDistributionChart').getContext('2d');
new Chart(distCtx, {
type: 'doughnut',
data: {
labels: ['SPOF', 'Excessive Latency', 'Excessive Load', 'Misconfiguration', 'Shared Fate'],
datasets: [{
data: [5, 2, 3, 3, 2],
backgroundColor: [
'rgb(209, 50, 18)',
'rgb(255, 153, 0)',
'rgb(247, 181, 0)',
'rgb(29, 129, 2)',
'rgb(0, 115, 187)'
],
borderWidth: 2,
borderColor: '#fff'
}]
},
options: {
responsive: true,
maintainAspectRatio: true,
plugins: {
legend: {
position: 'right',
labels: { font: { size: 13 }, padding: 15 }
},
title: {
display: true,
text: 'Risk Category Distribution',
font: { size: 16, weight: 'bold' }
}
}
}
});
// Risk Priority Chart
const priorityCtx = document.getElementById('riskPriorityChart').getContext('2d');
new Chart(priorityCtx, {
type: 'bar',
data: {
labels: ['Critical', 'High', 'Medium', 'Low'],
datasets: [{
label: 'Risk Count',
data: [3, 5, 4, 3],
backgroundColor: [
'rgb(209, 50, 18)',
'rgb(255, 153, 0)',
'rgb(247, 181, 0)',
'rgb(29, 129, 2)'
],
borderWidth: 0
}]
},
options: {
responsive: true,
maintainAspectRatio: true,
scales: {
y: {
beginAtZero: true,
ticks: { stepSize: 1 }
}
},
plugins: {
legend: { display: false },
title: {
display: true,
text: 'Risk Priority Distribution',
font: { size: 16, weight: 'bold' }
}
}
}
});
// Cost-Benefit Analysis Chart
const costCtx = document.getElementById('costBenefitChart').getContext('2d');
new Chart(costCtx, {
type: 'scatter',
data: {
datasets: [{
label: 'Aurora Global DB',
data: [{ x: 1500, y: 5 }],
backgroundColor: 'rgb(209, 50, 18)',
pointRadius: 15
}, {
label: 'Auto Scaling',
data: [{ x: 0, y: 4.5 }],
backgroundColor: 'rgb(29, 129, 2)',
pointRadius: 15
}, {
label: 'AWS FIS',
data: [{ x: 100, y: 3 }],
backgroundColor: 'rgb(255, 153, 0)',
pointRadius: 12
}, {
label: 'App Mesh',
data: [{ x: 50, y: 4 }],
backgroundColor: 'rgb(0, 115, 187)',
pointRadius: 12
}]
},
options: {
responsive: true,
maintainAspectRatio: true,
scales: {
x: {
title: {
display: true,
text: 'Monthly Cost Impact ($)',
font: { size: 14, weight: 'bold' }
}
},
y: {
title: {
display: true,
text: 'Business Value (1-5)',
font: { size: 14, weight: 'bold' }
},
min: 0,
max: 5
}
},
plugins: {
title: {
display: true,
text: 'Cost vs Business Value',
font: { size: 16, weight: 'bold' }
},
tooltip: {
callbacks: {
label: function(context) {
return context.dataset.label + ': $' + context.parsed.x + '/mo, Value=' + context.parsed.y;
}
}
}
}
}
});
// Animate progress bars
setTimeout(() => {
document.querySelectorAll('.progress-fill').forEach((bar, index) => {
setTimeout(() => {
const values = [0, 0, 0];
bar.style.width = values[index] + '%';
bar.textContent = values[index] + '%';
}, index * 300);
});
}, 500);
</script>
</body>
</html>
English | 中文
---
RMA Assessment Assistant
智能RMA(Reliability, Maintainability, Availability)韧性评估助手
安装
方式 A:npx skills(推荐)
# Install this skill
npx skills add aws-samples/sample-aws-resilience-skill --skill aws-rma-assessment
# Install all 4 resilience skills
npx skills add aws-samples/sample-aws-resilience-skill --skill '*'方式 B:Git clone
git clone https://github.com/aws-samples/sample-aws-resilience-skill.git🚀 AI辅助效率提升
传统RMA方式 vs AI辅助方式:
| 对比项 | 传统方式 | AI辅助方式 | 效率提升 |
|---|---|---|---|
| 评估时间 | 2.5-3小时 | 20-60分钟 | 节省75-85% |
| 交互次数 | 80+次单独问答 | 15-20次批量交互 | 减少75% |
| 自动分析 | ❌ 手动填写 | ✅ 自动分析文档/代码 | 自动回答60-70%问题 |
| 智能推断 | ❌ 不支持 | ✅ 上下文关联推断 | 减少重复询问 |
| 报告生成 | ⏱️ 1小时人工整理 | ⚡ 即时生成 | 节省100% |
| 可视化 | ⚠️ 基础图表 | ✅ 雷达图+热力图 | 增强洞察 |
功能特点
- ⚡ 批量问答:82个问题压缩到15-20次交互,大幅减少用户负担
- 🤖 智能分析:自动读取架构文档和IaC代码,自动回答60-70%问题
- 🧠 上下文推断:基于已有回答智能推断相关问题答案
- 📊 可视化报告:生成带雷达图和热力图的详细评估报告
- 🎯 双版本支持:简约版(20-30分钟)和完整版(40-60分钟)
- 💡 AWS服务建议:针对每个差距推荐具体的AWS服务和预估成本
基于的框架
RMA评估整合了以下AWS官方框架:
1. [AWS Well-Architected Framework (WAF)](https://aws.amazon.com/architecture/well-architected/) - 可靠性支柱
- 提供问题设计和最佳实践建议
- 评估标准基于WAF的可靠性原则
2. [AWS Observability Maturity Model](https://aws.amazon.com/solutions/implementations/observability-maturity-model/)
- 指导可观察性相关问题的评估标准
- 提供监控和日志的成熟度基准
3. [AWS Resilience Lifecycle Framework](https://docs.aws.amazon.com/wellarchitected/latest/reliability-pillar/resilience-lifecycle.html)
- 定义韧性持续改进的生命周期
- 指导改进路线图的制定
重要说明:本评估工具是非正式评估辅助工具,不是AWS官方认证或合规承诺。适用于内部韧性改进和成熟度提升。
适用场景
根据AWS官方RMA指南,以下场景适合进行RMA评估:
✅ 推荐使用场景
1. 客户请求指导
- 客户主动请求帮助建立持续改进系统
- 需要制定韧性提升计划
2. 发现韧性差距
- 账户团队检测到客户韧性态势存在差距
- 最近发生重大事故,需要评估和改进
3. 对话启动器
- 作为与客户讨论特定韧性领域的切入点
- 建立韧性意识和持续改进文化
❌ 不适用场景
- 正式合规审计(本工具不是认证工具)
- 需要外部审计师验证的场景
- 法律或监管要求的正式评估
使用方法
方式1:通过命令行调用(推荐)
/rma-assessment-assistant方式2:在对话中自然提及
我想评估我的应用程序的韧性帮我做一个RMA评估进行一次快速的韧性检查评估流程
1. 版本选择(5秒)
启动后,会展示两个版本的对比表:
| 维度 | 简约版 | 完整版 | 传统方式 |
|---|---|---|---|
| 问题数量 | 36个 | 82个 | 80+ |
| AI辅助耗时 | 20-30分钟 | 40-60分钟 | 3.5-4小时 |
| 交互次数 | 8-12次 | 15-20次 | 80+次 |
| 问题优先级 | P0 + P1 | P0 + P1 + P2 + P3 | P0-P3全部 |
| 核心领域 | ✅ 完整覆盖 | ✅ 完整覆盖 | ✅ 完整覆盖 |
| 混沌工程 | ⚠️ 部分 | ✅ 完整 | ✅ 完整 |
| 游戏日 | ❌ 不包含 | ✅ 包含 | ✅ 包含 |
| 组织学习 | ❌ 不包含 | ✅ 包含 | ✅ 包含 |
| 自动文档分析 | ✅ 支持 | ✅ 支持 | ❌ 手动 |
| 智能推断 | ✅ 支持 | ✅ 支持 | ❌ 不支持 |
2. 批量信息收集(1-2分钟)
一次性提供以下基本信息(支持复制粘贴):
- 应用名称、描述、业务关键性
- 架构文档路径(可选,提供后可自动回答60%+问题)
- IaC代码路径(可选,CloudFormation/Terraform等)
- 已知的RTO/RPO目标
- 当前部署区域和可用区
效率提升:传统方式需要多次问答,AI方式一次收集全部信息
3. 智能自动分析(5-15分钟)
如果提供了架构文档或IaC代码,AI将自动:
- 🔍 分析Multi-AZ、备份、Auto Scaling等配置
- 🤖 自动回答60-70%的问题(标注置信度)
- 🧠 基于上下文推断相关问题答案
- ✅ 生成自动分析摘要供用户确认
效率提升:传统方式需要手动逐个填写,AI方式大部分自动完成
4. 批量交互式问答(15-45分钟)
相关问题分组提问,不是82个单独问题:
- 📦 简约版:8-12次批量交互(每次3-6个相关问题)
- 📦 完整版:15-20次批量交互
- 每个问题提供3个成熟度级别选项(1-3级)
- 显示AWS最佳实践建议和智能推荐
- 支持"同意推荐"快速确认
效率提升:传统方式82次单独问答,AI方式批量分组减少75%交互
5. 即时报告生成(<1分钟)
自动生成包含以下内容的详细报告:
- 📊 执行摘要(总体评分、关键发现Top 5、AI分析统计)
- 📈 成熟度雷达图(10个领域可视化)
- 🗺️ 差距热力图(优先级和领域分布)
- 📈 领域评估详情(10个主题领域)
- 🎯 改进路线图(分阶段实施计划)
- 💡 AWS服务推荐(含成本预估)
- 📋 详细问答记录(标注自动/手动回答)
效率提升:传统方式需要1小时人工整理,AI方式即时生成
问题分类
10个主题领域
1. 恢复目标 (Recovery Objectives) - 3个问题 2. 可观察性 (Observability) - 14个问题 3. 灾难恢复 (Disaster Recovery) - 8个问题 4. 高可用性 (High Availability) - 5个问题 5. 变更管理 (Change Management) - 8个问题 6. 事件管理 (Incident Management) - 10个问题 7. 运营评审 (Operational Reviews) - 4个问题 8. 混沌工程 (Chaos Engineering) - 14个问题 9. 游戏日 (Game Days) - 3个问题 10. 组织学习 (Organizational Learning) - 11个问题
4个优先级
- 🔴 P0 - 关键问题 (12个):直接影响系统可用性和RTO/RPO
- 🟡 P1 - 重要问题 (24个):影响系统韧性和恢复能力
- 🟢 P2 - 建议问题 (28个):最佳实践和持续改进
- ⚪ P3 - 可选问题 (16个):成熟度提升和组织文化
报告示例
报告示例片段参见 assets/example-report-snippet.md。
预期效果
🚀 效率提升(量化数据)
| 评估环节 | 传统方式 | AI辅助方式 | 节省时间 | 效率提升 |
|---|---|---|---|---|
| 信息收集 | 30分钟(多次询问) | 1-2分钟(一次提供) | 28分钟 | 93% |
| 问题回答 | 2.5-3小时(82次单独问答) | 15-45分钟(批量交互) | 2小时+ | 75-85% |
| 文档分析 | 1小时(人工阅读) | 5-15分钟(自动分析) | 50分钟 | 83% |
| 报告生成 | 1小时(人工整理) | <1分钟(即时生成) | 60分钟 | 99% |
| 总计 | 3.5-4小时 | 20-60分钟 | 3小时+ | 75-85% |
用户反馈效果:
- 📉 交互次数减少75%(80次→15-20次)
- 🤖 自动回答覆盖率60-70%
- ⚡ 首次评估完成时间缩短到传统方式的15-25%
- 📊 报告质量提升(增加可视化图表和AI洞察)
💎 质量提升
- ✅ 智能推荐:基于AWS最佳实践和已有架构的个性化建议
- ✅ 零遗漏:自动检测架构配置,确保不遗漏关键问题
- ✅ 一致性:统一的评分标准和评估方法
- ✅ 可追溯:所有自动回答标注分析依据和置信度
- ✅ 可视化:雷达图和热力图增强洞察力
- ✅ 可操作:自动生成分阶段改进路线图和AWS服务推荐
参考资料
- AWS Well-Architected Framework - Reliability Pillar
- AWS Resilience Hub
- AWS Fault Injection Simulator
- Google SRE Book
问题数据完成度 ✅
当前版本包含:
- ✅ P0问题(12题):完整详细数据
- ✅ P1问题(24题):完整详细数据
- ✅ P2问题(30题):完整详细数据
- ✅ P3问题(14题):完整详细数据
🎉 所有82个问题包含完整详细数据!
简约版:P0+P1共36题,快速评估关键韧性指标(20-30分钟) 完整版:P0+P1+P2+P3共82题,全面深度评估(40-60分钟)
版本历史
- v2.0 (2026-03-03): 🎉 完成所有82个问题的详细数据,简约版和完整版均完全可用
- v1.1 (2026-03-03): 完成P1详细数据,简约版(36题)完全可用
- v1.0 (2026-03-01): 初始版本,支持82个问题框架,双版本选择
技术支持
如有问题或建议,请联系 AWS 架构团队。
English | 中文
---
RMA Assessment Assistant
An intelligent RMA (Reliability, Maintainability, Availability) resilience assessment assistant.
Installation
Option A: npx skills (Recommended)
# Install this skill
npx skills add aws-samples/sample-aws-resilience-skill --skill aws-rma-assessment
# Install all 4 resilience skills
npx skills add aws-samples/sample-aws-resilience-skill --skill '*'Option B: Git clone
git clone https://github.com/aws-samples/sample-aws-resilience-skill.git🚀 AI-Assisted Efficiency Gains
Traditional RMA approach vs AI-assisted approach:
| Comparison | Traditional | AI-Assisted | Efficiency Gain |
|---|---|---|---|
| Assessment Time | 2.5–3 hours | 20–60 minutes | 75–85% saved |
| Interactions | 80+ individual Q&As | 15–20 batch interactions | 75% reduction |
| Auto Analysis | ❌ Manual entry | ✅ Auto-analyze docs/code | Auto-answers 60–70% of questions |
| Smart Inference | ❌ Not supported | ✅ Context-based inference | Fewer repeated questions |
| Report Generation | ⏱️ 1 hour manual work | ⚡ Instant generation | 100% saved |
| Visualization | ⚠️ Basic charts | ✅ Radar + heatmap | Enhanced insights |
Features
- ⚡ Batch Q&A: 82 questions compressed into 15–20 interactions, dramatically reducing user burden
- 🤖 Smart Analysis: Automatically reads architecture docs and IaC code, auto-answers 60–70% of questions
- 🧠 Context Inference: Intelligently infers related question answers based on existing responses
- 📊 Visual Reports: Generates detailed assessment reports with radar charts and heatmaps
- 🎯 Dual Version Support: Lite version (20–30 min) and Full version (40–60 min)
- 💡 AWS Service Recommendations: Specific AWS service suggestions and estimated costs for each gap
Underlying Frameworks
The RMA assessment integrates the following official AWS frameworks:
1. [AWS Well-Architected Framework (WAF)](https://aws.amazon.com/architecture/well-architected/) - Reliability Pillar
- Provides question design and best practice recommendations
- Assessment criteria based on WAF reliability principles
2. [AWS Observability Maturity Model](https://aws.amazon.com/solutions/implementations/observability-maturity-model/)
- Guides assessment criteria for observability-related questions
- Provides maturity benchmarks for monitoring and logging
3. [AWS Resilience Lifecycle Framework](https://docs.aws.amazon.com/wellarchitected/latest/reliability-pillar/resilience-lifecycle.html)
- Defines the lifecycle for continuous resilience improvement
- Guides the development of improvement roadmaps
Important Note: This assessment tool is an informal assessment aid, not an official AWS certification or compliance commitment. It is suitable for internal resilience improvement and maturity advancement.
Applicable Scenarios
According to the official AWS RMA guide, the following scenarios are suitable for RMA assessment:
✅ Recommended Use Cases
1. Customer-Requested Guidance
- Customer proactively requests help establishing a continuous improvement system
- Need to develop a resilience improvement plan
2. Identifying Resilience Gaps
- Account team detects gaps in a customer's resilience posture
- A major incident has recently occurred requiring assessment and improvement
3. Conversation Starter
- As an entry point to discuss specific resilience areas with customers
- Building resilience awareness and a culture of continuous improvement
❌ Not Applicable
- Formal compliance audits (this tool is not a certification tool)
- Scenarios requiring external auditor validation
- Formal assessments required by law or regulation
How to Use
Method 1: Command-line invocation (recommended)
/rma-assessment-assistantMethod 2: Mention naturally in conversation
I want to assess the resilience of my applicationHelp me do an RMA assessmentRun a quick resilience checkAssessment Process
1. Version Selection (5 seconds)
After launching, a comparison table of the two versions is displayed:
| Dimension | Lite Version | Full Version | Traditional |
|---|---|---|---|
| Questions | 36 | 82 | 80+ |
| AI-assisted time | 20–30 min | 40–60 min | 3.5–4 hours |
| Interactions | 8–12 | 15–20 | 80+ |
| Question priority | P0 + P1 | P0 + P1 + P2 + P3 | P0–P3 all |
| Core domains | ✅ Full coverage | ✅ Full coverage | ✅ Full coverage |
| Chaos Engineering | ⚠️ Partial | ✅ Full | ✅ Full |
| Game Days | ❌ Not included | ✅ Included | ✅ Included |
| Organizational Learning | ❌ Not included | ✅ Included | ✅ Included |
| Auto document analysis | ✅ Supported | ✅ Supported | ❌ Manual |
| Smart inference | ✅ Supported | ✅ Supported | ❌ Not supported |
2. Batch Information Collection (1–2 minutes)
Provide the following basic information all at once (copy-paste friendly):
- Application name, description, business criticality
- Architecture document path (optional; enables auto-answering 60%+ questions)
- IaC code path (optional; CloudFormation/Terraform, etc.)
- Known RTO/RPO targets
- Current deployment regions and availability zones
Efficiency gain: Traditional approach requires multiple rounds of Q&A; AI approach collects all information at once.
3. Smart Auto Analysis (5–15 minutes)
If architecture docs or IaC code are provided, the AI will automatically:
- 🔍 Analyze configurations such as Multi-AZ, backup, Auto Scaling
- 🤖 Auto-answer 60–70% of questions (with confidence annotations)
- 🧠 Infer related question answers based on context
- ✅ Generate an auto-analysis summary for user confirmation
Efficiency gain: Traditional approach requires manual entry one by one; AI approach completes most of the work automatically.
4. Batch Interactive Q&A (15–45 minutes)
Related questions are grouped together — not 82 individual questions:
- 📦 Lite version: 8–12 batch interactions (3–6 related questions each)
- 📦 Full version: 15–20 batch interactions
- Each question provides 3 maturity level options (levels 1–3)
- Displays AWS best practice recommendations and smart suggestions
- Supports "accept recommendation" for quick confirmation
Efficiency gain: Traditional approach has 80 individual Q&As; AI approach reduces interactions by 75% through batch grouping.
5. Instant Report Generation (< 1 minute)
Automatically generates a detailed report containing:
- 📊 Executive summary (overall score, Top 5 key findings, AI analysis stats)
- 📈 Maturity radar chart (10-domain visualization)
- 🗺️ Gap heatmap (priority and domain distribution)
- 📈 Domain assessment details (10 thematic areas)
- 🎯 Improvement roadmap (phased implementation plan)
- 💡 AWS service recommendations (with cost estimates)
- 📋 Detailed Q&A record (annotated as auto/manual answers)
Efficiency gain: Traditional approach requires 1 hour of manual compilation; AI approach generates instantly.
Question Classification
10 Thematic Domains
1. Recovery Objectives - 3 questions 2. Observability - 14 questions 3. Disaster Recovery - 8 questions 4. High Availability - 5 questions 5. Change Management - 8 questions 6. Incident Management - 10 questions 7. Operational Reviews - 4 questions 8. Chaos Engineering - 14 questions 9. Game Days - 3 questions 10. Organizational Learning - 11 questions
4 Priority Levels
- 🔴 P0 - Critical (12 questions): Directly affect system availability and RTO/RPO
- 🟡 P1 - Important (24 questions): Affect system resilience and recovery capability
- 🟢 P2 - Recommended (28 questions): Best practices and continuous improvement
- ⚪ P3 - Optional (16 questions): Maturity advancement and organizational culture
Sample Report
For a sample report snippet, see assets/example-report-snippet.md.
Expected Outcomes
🚀 Efficiency Gains (Quantified)
| Assessment Stage | Traditional | AI-Assisted | Time Saved | Efficiency Gain |
|---|---|---|---|---|
| Information Collection | 30 min (multiple rounds) | 1–2 min (once) | 28 min | 93% |
| Answering Questions | 2.5–3 hours (82 individual Q&As) | 15–45 min (batch) | 2+ hours | 75–85% |
| Document Analysis | 1 hour (manual reading) | 5–15 min (auto) | 50 min | 83% |
| Report Generation | 1 hour (manual compilation) | < 1 min (instant) | 60 min | 99% |
| Total | 3.5–4 hours | 20–60 minutes | 3+ hours | 75–85% |
User feedback results:
- 📉 75% fewer interactions (80 → 15–20)
- 🤖 60–70% auto-answer coverage
- ⚡ First-time assessment completed in 15–25% of traditional time
- 📊 Higher report quality (added visual charts and AI insights)
💎 Quality Improvements
- ✅ Smart Recommendations: Personalized suggestions based on AWS best practices and existing architecture
- ✅ Zero Omissions: Automatic detection of architecture configurations ensures no critical issues are missed
- ✅ Consistency: Uniform scoring criteria and assessment methodology
- ✅ Traceability: All auto-answers annotated with analysis basis and confidence level
- ✅ Visualization: Radar charts and heatmaps enhance insights
- ✅ Actionable: Automatically generates phased improvement roadmaps and AWS service recommendations
References
- AWS Well-Architected Framework - Reliability Pillar
- AWS Resilience Hub
- AWS Fault Injection Simulator
- Google SRE Book
Question Data Completeness ✅
Current version includes:
- ✅ P0 questions (12): Complete detailed data
- ✅ P1 questions (24): Complete detailed data
- ✅ P2 questions (30): Complete detailed data
- ✅ P3 questions (14): Complete detailed data
🎉 All 82 questions contain complete detailed data!
Lite version: P0+P1, 36 questions total — quick assessment of key resilience indicators (20–30 minutes) Full version: P0+P1+P2+P3, 82 questions total — comprehensive in-depth assessment (40–60 minutes)
Version History
- v2.0 (2026-03-03): 🎉 Complete detailed data for all 82 questions; both Lite and Full versions fully available
- v1.1 (2026-03-03): Complete P1 detailed data; Lite version (36 questions) fully available
- v1.0 (2026-03-01): Initial release, supporting 82-question framework with dual-version selection
Technical Support
For questions or suggestions, please contact the AWS Architecture Team.
评估工作流 — 详细步骤
第0步:场景识别(可选)
在开始评估前,确认用户场景是否适合RMA评估。
推荐使用场景: 1. 客户请求指导 — 客户主动请求建立持续韧性改进计划 2. 发现韧性差距 — 账户团队检测到客户韧性态势存在重大差距,或最近发生重大事故 3. 对话启动器 — 作为与客户讨论特定韧性领域(如DR、HA)的切入点
不适用场景:正式合规审计、法律/监管要求的正式评估、需要AWS官方认证的场景。
第1步:版本选择
使用 AskUserQuestion 工具展示两个版本的对比:
question: "请选择RMA评估的版本:"
header: "评估版本"
multiSelect: false
options:
- label: "简约版 - 快速评估(推荐)"
description: "36个核心问题(P0+P1优先级),聚焦关键韧性指标。覆盖恢复目标、SLO、DR策略、HA控制、部署策略、事件管理等。适合快速了解当前韧性态势和识别关键风险。"
- label: "完整版 - 深度评估"
description: "全部80个问题(P0-P3),覆盖所有韧性领域。额外覆盖混沌工程、游戏日、组织学习等成熟度提升领域。适合全面韧性成熟度评估和长期改进规划。"第2步:批量信息收集
一次性收集所有基本信息比多轮收集更高效。在欢迎消息中包含以下内容:
欢迎消息模板:
欢迎使用RMA韧性评估助手!我将帮助你快速评估应用程序的韧性成熟度。
为了获得最准确的评估,请一次性提供以下信息(支持复制粘贴):
[应用基本信息]
- 应用名称:
- 简要描述:
- 业务关键性:高/中/低
- 用户规模:
- 服务区域:
[技术架构]
- 架构文档路径:(文件路径或URL,如有)
- IaC代码路径:(CloudFormation/Terraform,如有)
- 主要AWS服务:(如EC2、RDS、S3)
- 部署区域/可用区:(如us-east-1,3个可用区)
[当前韧性状况]
- RTO目标:(如15分钟,或"未定义")
- RPO目标:(如接近零,或"未定义")
- DR计划:有/无(如有,请简述策略)
- 近期事故:(日期和简述,或"无")
提示:如果对任何项目不确定,可以输入"不确定"或"待定",我会在后续问题中帮助澄清。信息收集策略: 1. 一次性收集:在欢迎消息中请求所有基本信息 2. 容错:允许用户跳过或输入"不确定" 3. 自动补全:在后续问答中自动关联和填充缺失信息 4. 智能推断:从部分输入推断其他相关信息
Assessment Workflow — Detailed Steps
Step 0: Scenario Identification (Optional)
Before starting the assessment, confirm the user scenario is suitable for RMA assessment.
Recommended Use Cases: 1. Customer Requests Guidance — Customer proactively requests establishing a continuous resilience improvement program 2. Resilience Gaps Identified — Account team detects significant gaps in customer resilience posture, or a recent major incident occurred 3. Conversation Starter — As an entry point for discussing specific resilience areas (e.g., DR, HA) with customers
Not Suitable For: Formal compliance audits, legally/regulatory required formal assessments, scenarios requiring official AWS certification.
Step 1: Version Selection
Use the AskUserQuestion tool to present a comparison of the two versions:
question: "Please select the RMA assessment version:"
header: "Assessment Version"
multiSelect: false
options:
- label: "Compact - Quick Assessment (Recommended)"
description: "36 core questions (P0+P1 priority), focusing on key resilience indicators. Covers recovery objectives, SLOs, DR strategies, HA controls, deployment strategies, incident management, and more. Ideal for quickly understanding current resilience posture and identifying critical risks."
- label: "Full - Deep Assessment"
description: "All 82 questions (P0-P3), covering all resilience domains. Additionally covers chaos engineering, game days, organizational learning, and other maturity uplift areas. Ideal for comprehensive resilience maturity assessment and long-term improvement planning."Step 2: Batch Information Collection
Collecting all basic information at once is more efficient than multiple rounds. Include the following in the welcome message:
Welcome Message Template:
Welcome to the RMA Resilience Assessment Assistant! I will help you quickly assess your application's resilience maturity.
For the most accurate assessment, please provide the following information at once (copy-paste friendly):
[Application Basics]
- Application name:
- Brief description:
- Business criticality: High/Medium/Low
- User scale:
- Service regions:
[Technical Architecture]
- Architecture doc path: (file path or URL, if available)
- IaC code path: (CloudFormation/Terraform, if available)
- Primary AWS services: (e.g., EC2, RDS, S3)
- Deployment regions/AZs: (e.g., us-east-1 with 3 AZs)
[Current Resilience Status]
- RTO target: (e.g., 15 minutes, or "undefined")
- RPO target: (e.g., near-zero, or "undefined")
- DR plan: Yes/No (if yes, briefly describe strategy)
- Recent incidents: (date and brief description, or "none")
Tip: If unsure about any item, you may enter "unsure" or "TBD" and I will help clarify during subsequent questions.Information Collection Strategy: 1. One-time collection: Request all basic info in the welcome message 2. Fault-tolerant: Allow users to skip or enter "unsure" 3. Auto-complete: Automatically correlate and fill in missing info during subsequent Q&A 4. Smart inference: Infer other related information from partial inputs
自动分析规则 — 智能推断引擎
目标
自动回答60-70%的问题,减轻用户负担。
3.1 文档和代码分析
如果用户提供了架构文档或IaC代码,立即执行自动分析:
| 分析项 | 搜索关键词/模式 | 可自动回答的问题 | 工具 |
|---|---|---|---|
| Multi-AZ部署 | MultiAZ, multi_az_enabled, availability_zone | Q36(故障隔离)、Q35(硬依赖) | Grep |
| 备份策略 | backup, snapshot, BackupRetentionPeriod | Q30(数据恢复验证) | Grep |
| 自动扩展 | AutoScaling, ScalingPolicy, min_size, max_size | Q39(服务限制)、Q12(负载变化) | Grep |
| 监控配置 | CloudWatch, Alarm, MetricFilter, monitoring | Q13-26(所有可观察性问题) | Grep |
| DR配置 | ReplicationConfiguration, GlobalCluster, cross-region | Q27-34(灾难恢复问题) | Grep |
| 部署策略 | DeploymentStrategy, BlueGreen, Canary, CodeDeploy | Q40-46(变更管理问题) | Grep |
| 日志配置 | LogGroup, LogStream, logging_enabled | Q14-15(日志相关) | Grep |
| 健康检查 | HealthCheck, health_check_path, TargetGroup | Q38(HA有效性) | Grep |
3.2 上下文推断规则
基于收集的信息和已回答的问题,自动推断相关问题答案:
1. 如果RTO < 1小时 -> Q27(DR策略)>= Level 2 [来源:用户声明目标,置信度:中 — 需追问"此RTO是否通过DR测试验证过?"],Q36(故障隔离)>= Level 2,Q40(部署方法)>= Level 2 2. 如果部署区域 > 1 -> Q27(DR策略)>= Level 2 [来源:基础设施配置,置信度:高 — 但多区域部署本身不等于成熟DR;Level 3要求已验证的自动故障转移+季度测试],Q36(故障隔离)>= Level 2 3. 如果发现CloudWatch Alarm配置 -> Q13(指标建立)>= Level 2 [来源:IaC/配置验证,置信度:高],Q19(可用性监控)>= Level 2,Q23(告警策略)>= Level 2 4. 如果发现CodePipeline/CodeDeploy -> Q40(部署方法)>= Level 2 [来源:IaC/配置验证,置信度:高],Q43(自动化集成)>= Level 2 5. 如果业务关键性 = "高" -> Q3(关键性)= Level 3,Q2(SLO)建议 >= 99.99%
3.3 推断置信度分类
- 基于证据(高置信度):直接从 IaC 代码、AWS 配置或 API 输出中提取。可自动回答,无需确认。
- 基于声明目标(中置信度):基于用户声明的目标(如"我们的 RTO 是1小时")。必须追问:"此目标是否通过测试验证过?"
- 推断(低置信度):从其他答案或假设推导。必须提交给用户明确确认。
置信度决策矩阵
| 置信度 | 操作 | 报告显示 | 示例 |
|---|---|---|---|
| 高(基于证据) | 自动填充,无需确认 | ✅ 自动评估(证据:{来源}) | IaC 中发现 CloudWatch Alarm → Q13 ≥ Level 2 |
| 中(基于声明目标) | 自动填充 + 必须询问确认问题 | ⚠️ 基于声明目标推断 — 请确认 | 用户说"RTO < 1小时"→ Q27 ≥ Level 2,追问"此 RTO 是否通过 DR 测试验证过?" |
| 低(推断) | 不自动填充,必须询问用户 | ❓ 无法确定 — 需要用户输入 | 检测到单区域 → 无法推断 DR 成熟度级别 |
处理规则
1. 高置信度:立即应用,在报告中注明证据来源。用户可覆盖。 2. 中置信度:暂时应用,生成确认问题。如果用户在会话中未确认,在报告中降级为"未验证"。 3. 低置信度:完全跳过自动填充。加入"需要输入的问题"队列。 4. 初始分析后如仍有 >5 个低置信度项,提供批量问题模式:将所有剩余问题以编号列表呈现,便于高效回答。
3.4 自动回答输出格式
按三个类别生成自动回答摘要:
- 高置信度自动回答:直接从文件/配置中提取
- 中置信度推断:基于上下文的推断,需要用户确认
- 需要用户输入:将在批量问答中提问
每个自动回答必须包含置信度级别和分析依据,允许用户纠正。优先自动回答P0/P1问题。
Auto-Analysis Rules — Intelligent Inference Engine
Goal
Automatically answer 60-70% of questions, reducing user burden.
3.1 Document and Code Analysis
If the user provides architecture docs or IaC code, immediately perform auto-analysis:
| Analysis Item | Search Keywords/Patterns | Auto-Answerable Questions | Tool |
|---|---|---|---|
| Multi-AZ Deployment | MultiAZ, multi_az_enabled, availability_zone | Q36 (fault isolation), Q35 (hard deps) | Grep |
| Backup Strategy | backup, snapshot, BackupRetentionPeriod | Q30 (data recovery validation) | Grep |
| Auto Scaling | AutoScaling, ScalingPolicy, min_size, max_size | Q39 (service limits), Q12 (load changes) | Grep |
| Monitoring Config | CloudWatch, Alarm, MetricFilter, monitoring | Q13-26 (all observability questions) | Grep |
| DR Config | ReplicationConfiguration, GlobalCluster, cross-region | Q27-34 (disaster recovery questions) | Grep |
| Deployment Strategy | DeploymentStrategy, BlueGreen, Canary, CodeDeploy | Q40-46 (change management questions) | Grep |
| Log Config | LogGroup, LogStream, logging_enabled | Q14-15 (log-related) | Grep |
| Health Checks | HealthCheck, health_check_path, TargetGroup | Q38 (HA effectiveness) | Grep |
3.2 Context Inference Rules
Based on collected information and answered questions, automatically infer related question answers:
1. If RTO < 1 hour -> Q27 (DR strategy) >= Level 2 [Source: user-stated target, confidence: medium — verify with "Has this RTO been validated through DR testing?"], Q36 (fault isolation) >= Level 2, Q40 (deployment method) >= Level 2 2. If deployment regions > 1 -> Q27 (DR strategy) >= Level 2 [Source: infrastructure config, confidence: high — but multi-region deployment alone does not imply mature DR; Level 3 requires verified automated failover + quarterly testing], Q36 (fault isolation) >= Level 2 3. If CloudWatch Alarm config found -> Q13 (metrics established) >= Level 2 [Source: IaC/config verified, confidence: high], Q19 (availability monitoring) >= Level 2, Q23 (alert strategy) >= Level 2 4. If CodePipeline/CodeDeploy found -> Q40 (deployment method) >= Level 2 [Source: IaC/config verified, confidence: high], Q43 (automation integration) >= Level 2 5. If business criticality = "High" -> Q3 (criticality) = Level 3, Q2 (SLO) suggest >= 99.99%
3.3 Inference Confidence Classification
- Evidence-based (high confidence): Directly extracted from IaC code, AWS config, or API output. Can be auto-answered without confirmation.
- Goal-stated (medium confidence): Based on user-declared targets (e.g., "our RTO is 1 hour"). Must ask: "Has this target been validated through testing?"
- Inferred (low confidence): Derived from other answers or assumptions. Must be presented to user for explicit confirmation.
Confidence-Based Decision Matrix
| Confidence | Action | Report Display | Example |
|---|---|---|---|
| High (Evidence-based) | Auto-fill, no confirmation needed | ✅ Auto-assessed (evidence: {source}) | CloudWatch Alarm found in IaC → Q13 ≥ Level 2 |
| Medium (Goal-stated) | Auto-fill + MUST ask confirmation question | ⚠️ Inferred from stated goal — please confirm | User says "RTO < 1h" → Q27 ≥ Level 2, ask "Has this RTO been validated through DR testing?" |
| Low (Inferred) | DO NOT auto-fill, MUST ask user | ❓ Unable to determine — user input required | Single region detected → cannot infer DR maturity level |
Processing Rules
1. High-confidence: Apply immediately, show in report with evidence source. User can override. 2. Medium-confidence: Apply tentatively, generate a confirmation question. If user does not confirm within the session, downgrade to "Unverified" in report. 3. Low-confidence: Skip auto-fill entirely. Add to "Questions Requiring Input" queue. 4. When >5 low-confidence items remain after initial analysis, offer batch-question mode: present all remaining questions in a numbered list for efficient answering.
3.4 Auto-Answer Output Format
Generate auto-answer summary in three categories:
- High-confidence auto-answers: Directly extracted from files/configurations
- Medium-confidence inferences: Context-based inferences requiring user confirmation
- Requires user input: Will be asked during batch Q&A
Each auto-answer must include confidence level and analysis basis, allowing user corrections. Prioritize auto-answering P0/P1 questions.
批量交互式问答分组详情
本文件包含 RMA 评估中批量问答的详细分组策略和问题列表。
主流程概述见 SKILL_ZH.md 的"第4步"章节。
---
简约版(P0+P1,36题)-> 8-12次交互
第1组 - 恢复目标与SLO(P0: 3题)- 1次交互
- Q1: 如何定义恢复目标(RTO/RPO/MTTR)?
- Q2: 如何定义SLO(正常运行时间和延迟)?
- Q3: 如何确定应用程序关键程度?
- 为什么一起问:都关于业务要求定义,用户通常在同一文档中定义
第2组 - 灾难恢复策略与测试(P0: 3题 + P1: 4题)- 2次交互
- 交互1(P0核心):
- Q27: DR策略选择标准?
- Q30: 如何验证数据恢复策略?
- Q34: 故障转移测试频率?
- 交互2(P1详情):
- Q28: 事故通信协议?
- Q29: 数据恢复是否自动化?
- Q31: DR计划详细程度?
- Q32: 如何管理主辅站点偏差?
第3组 - 高可用性设计(P0: 3题 + P1: 2题)- 2次交互
- 交互1(P0核心):
- Q35: 如何规划硬依赖故障?
- Q36: 如何定义故障隔离边界?
- Q38: 何时评估HA控制有效性?
- 交互2(P1详情):
- Q37: 如何疏散故障隔离边界?
- Q39: 如何避免AWS服务限制?
第4组 - 变更管理与部署(P0: 1题 + P1: 6题)- 2次交互
- 交互1(部署流程):
- Q40: 如何评估代码部署方法?[P0]
- Q41: 使用什么环境测试?
- Q42: 生产部署频率?
- Q43: 自动化集成程度?
- 交互2(质量保证):
- Q44: 如何回滚失败部署?
- Q45: 如何验证变更成功?
- Q46: 如何管理版本控制?
第5组 - 事件管理(P0: 2题 + P1: 6题)- 2次交互
- 交互1(P0核心):
- Q48: 如何计划事件响应?
- Q51: 事件升级程序?
- 交互2(P1详情):
- Q49: 事件手册是否自动化?
- Q50: 团队培训方法?
- Q52: 事件报告详细程度?
- Q54: 如何应用事件洞察?
- Q55: 如何通知客户?
- Q56: 团队是否拥有流程?
第6组 - 可观察性(P1: 6题)- 2次交互
- 交互1(监控基础):
- Q13: 如何建立指标(日志/指标/追踪/告警)?
- Q14: 如何确保日志可访问?
- Q16: 如何利用跟踪数据?
- 交互2(高级监控):
- Q18: 如何将指标与故障域对齐?
- Q19: 如何跟踪可用性和延迟?
- Q21: 如何跟踪依赖关系?
---
完整版(+P2+P3,44题)-> 额外7-8次交互
简约版分组扩展(+9题,分配到现有组中)
完整版评估时,以下P2/P3问题追加到简约版的对应分组中(不增加独立交互;合并到现有组的末尾):
| 追加到 | 新增问题 | 优先级 | 备注 |
|---|---|---|---|
| 第1组(恢复目标) | Q4: 韧性需求限制?Q5: 控制选择? | P2 | 恢复目标深入 |
| 第1组(恢复目标) | Q6: 韧性学习vs新功能? | P3 | 组织层面 |
| 第1组(恢复目标) | Q11: 高负载性能预测?Q12: 负载变化准备? | P2 | 韧性容量 |
| 第2组(DR) | Q33: 故障转移站点服务限制? | P3 | DR补充 |
| 第4组(变更管理) | Q47: 代码组织标准合规? | P2 | 变更管理补充 |
| 第5组(事件管理) | Q53: 报告库使用情况?Q57: 响应团队授权? | P2 | 事件管理补充 |
第7组 - 韧性分析(P2: 6题)- 2次交互
- 交互1(需求与建模):
- Q4: 记录在案的韧性要求限制有哪些?
- Q5: 如何考虑可能性、影响和成本选择控制措施?
- Q10: 使用哪种方法对故障情景进行建模?
- 交互2(依赖与清单):
- Q7: 依赖关系文档有多全面?
- Q8: 如何解决与依赖关系的耦合问题?
- Q9: 如何创建和利用清单?
- 为什么一起问:都关于系统韧性的前期分析——需求定义、风险建模和依赖管理
第8组 - 可观察性进阶(P2: 8题)- 2次交互
- 交互1(日志与合成监控):
- Q15: 如何设置从日志中检索数据?
- Q17: 如何使用合成流量监控应用程序?
- Q20: 指标在哪些领域提供报告?
- Q22: 指标何时提供有关故障场景的信息?
- 交互2(告警策略):
- Q23: 选择警报的策略是什么?
- Q24: 警报阈值的适应性如何?
- Q25: 使用什么方法来中继警报通知?
- Q26: 如何自动响应警报?
- 为什么一起问:交互1关注数据采集和分析,交互2关注告警设计和响应自动化
第9组 - 混沌工程(P2: 7题 + P3: 5题)- 2次交互
- 交互1(P2核心实验能力):
- Q62: 实验负载反映生产流量的程度?
- Q63: 混沌实验条件有多现实?
- Q64: 混沌实验在哪个环境中进行?
- Q65: 混沌实验的可重复性如何?
- Q66: 混沌实验多久进行一次?
- Q67: 如何测试故障隔离边界?
- Q68: 正在进行哪些类型的测试?
- 交互2(P3组织成熟度):
- Q69: 是否保留了实验目录?
- Q70: 提供了哪些混沌工程指导?
- Q71: 如何在实验期间实施监测?
- Q72: 实验如何集成到SDLC中?
- Q73: 组织如何从团队实验中学习?
- 为什么一起问:交互1评估混沌工程技术实践,交互2评估组织级推广和成熟度
第10组 - 运营评审、游戏日与组织学习(P2: 4题 + P3: 7题)- 2次交互
- 交互1(运营评审 + 游戏日):
- Q58: 谁参加运营审查?
- Q59: 运营审查多久进行一次?
- Q60: 运营审查有多彻底?
- Q61: 如何监控运营绩效?
- Q74: Game Days对实际环境的模拟程度?
- Q75: 游戏日的场景有多逼真?
- 交互2(游戏日续 + 组织学习):
- Q76: 游戏日的重现性如何?
- Q77: 如何培育支持韧性的社区?
- Q78: 如何定义韧性的角色和责任?
- Q79: 如何让团队了解韧性概念的最新情况?
- Q80: 如何根据独特情况定制韧性训练?
- 为什么一起问:交互1关注运营评审和演练实践,交互2关注组织文化和持续学习
---
批量提问格式
每组问题使用对话格式(不使用AskUserQuestion工具,减少交互复杂度):
## 第N组:{组名}({优先级},{数量}个问题)
**本组覆盖**:{简要主题描述}
---
### 问题X [P0/P1/P2/P3]:{问题标题}
**问题**:{完整问题描述}
**重要性**:{简要说明}
**AWS最佳实践**:{推荐}
**智能推荐**:基于你的架构分析,建议 [Level 2] - {原因}
**请选择成熟度级别(1-3):**
- [Level 1] {描述}
- [Level 2] {描述} <- 推荐
- [Level 3] {描述}
**你的回答**:Level ___ (可选备注:___)
---
**请一次性回答本组所有问题**,示例格式:
Q1: Level 2 - RTO/RPO已定义但未定期测试
Q2: Level 3 - 99.99%可用性,<100ms延迟
Q3: Level 2 - 基于收入评估关键性---
批量问答优化技巧
1. 预填推荐答案:基于自动分析结果预填建议级别 2. 允许快速确认:用户可以回复"同意推荐"接受所有建议 3. 支持部分回答:用户可以只回答部分问题;其余使用推荐答案 4. 实时反馈:每组完成后立即显示该组得分和关键发现
---
效率提升对比
| 模式 | 简约版(36题) | 完整版(80题) |
|---|---|---|
| 传统方式 | 36次交互,2小时 | 80次交互,3.5小时 |
| AI批量 | 8-12次交互,20-30分钟 | 15-20次交互,40-60分钟 |
| 效率提升 | 节省85%时间 | 节省75%时间 |
---
问题分组总览(按主题领域)
1. 恢复目标
- P0: 问题 1, 2, 3
- P2: 问题 4, 5
2. 可观察性
- P1: 问题 13, 14, 16, 18, 19, 21
- P2: 问题 15, 17, 20, 22, 23, 24, 25, 26
3. 灾难恢复
- P0: 问题 27, 30, 34
- P1: 问题 28, 29, 31, 32
- P3: 问题 33
4. 高可用性
- P0: 问题 35, 36, 38
- P1: 问题 37, 39
5. 变更管理
- P0: 问题 40
- P1: 问题 41, 42, 43, 44, 45, 46
- P2: 问题 47
6. 事件管理
- P0: 问题 48, 51
- P1: 问题 49, 50, 52, 54, 55, 56
- P2: 问题 53, 57
7. 运营评审
- P2: 问题 58, 59, 60, 61
8. 混沌工程
- P2: 问题 62, 63, 64, 65, 66, 67, 68
- P3: 问题 69, 70, 71, 72, 73
9. 游戏日
- P3: 问题 74, 75, 76
10. 组织学习
- P2: 问题 6, 11, 12
- P3: 问题 77, 78, 79, 80
Related skills
FAQ
How many questions does the RMA assessment have?
It supports a compact version with 36 core questions and a full version with 82 questions.
Is this an official AWS certification?
No, it is an unofficial assessment aid for internal resilience improvement, not a compliance or certification tool.