

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 教程：创建 active/passive 区域切换计划
<a name="tutorial-region-switch"></a>

本教程将指导您为在 us-east-1 中运行的应用程序创建 active/passive 区域切换计划并恢复到 us-west-2。示例包括用于计算的 Amazon EC2 实例、用于存储的 Amazon Aurora Global Database 和用于 DNS 的 Amazon Route 53。

在本教程中，您将完成以下步骤：
+ 创建区域切换计划
+ 构建计划的工作流程和执行块
+ 构建 EC2 Auto Scaling 组执行块
+ 构建两个手动批准执行块
+ 构建两个自定义操作 Lambda 执行块
+ 构建 Amazon Aurora Global Database 执行块
+ 构建 ARC 路由控制块
+ 执行区域切换计划

## 先决条件
<a name="tutorial-rs-prerequisites"></a>

开始本教程之前，请确认您在这两个区域都具有先决条件：
+ IAM 角色，具有适当的权限
+ EC2 Auto Scaling 群组
+ 用于维护页面和屏蔽的 Lambda 函数
+ Aurora Global Database
+ ARC 路由控制

## 步骤 1：创建区域切换计划
<a name="tutorial-rs-create-plan"></a>

1. 在区域切换控制台中，选择**创建区域切换计划**。

1. 提供以下详细信息：
   + **主要区域**：选择 us-east-1
   + **备用区域**：选择 us-west-2
   + **所需的恢复时间目标（RTO）**（可选）
   + **IAM 角色**：输入计划执行 IAM 角色。此 IAM 角色允许在执行期间切换区域以呼叫 AWS 服务。

1. 选择**创建**。

（可选）将来自不同 AWS 账户的资源添加到您的区域切换套餐中：

1. 创建跨账户角色：
   + 在托管资源的账户中，创建 IAM 角色。
   + 针对计划将要访问的特定资源添加权限。
   + 添加允许执行角色代入新该色的信任策略。
   + 输入并记下您将用作共享密钥的外部 ID。

1. 在您的计划中配置资源：
   + 将资源添加到计划时，请指定另外两个字段：
     + **crossAccountRole**：您在步骤 1 中创建的角色的 ARN
     + **externalId**：您在步骤 1 中输入的外部 ID

访问账户 987654321 中资源的 EC2 Auto Scaling 执行块的配置示例：

```
{
  "executionBlock": "EC2AutoScaling",
  "name": "ASG",
  "crossAccountRole": "arn:aws:iam::987654321:role/RegionSwitchCrossAccountRole",
  "externalId": "unique-external-id-123",
  "autoScalingGroupArn": "arn:aws:autoscaling:us-west-2:987654321:autoScalingGroup:*:autoScalingGroupName/CrossAccountASG"
}
```

所需权限：
+ 执行角色必须具有跨账户角色的 sts: AssumeRole 权限。
+ 跨账户角色必须仅对要访问的特定资源具有权限。
+ 跨账户角色的信任策略必须包括：
  + 执行角色的账户作为可信实体。
  + 外部 ID 条件。
+ 有关配置跨账户角色的更多信息，请参阅[跨账户资源权限](security_iam_region_switch_cross_account.md)。

在执行计划之前，区域切换将验证以下内容：
+ 执行角色可以代入跨账户角色。
+ 跨账户角色具有所需的权限。
+ 外部 ID 与信任策略相匹配。

## 步骤 2：构建计划的工作流程和执行块
<a name="tutorial-rs-build-workflows"></a>

1. 在区域切换计划详细信息页面中，选择**构建工作流程**。

1. 选择**为所有区域构建相同的激活工作流程**。

1. 输入区域激活工作流程描述（可选）。这将用于在执行计划时轻松识别工作流程。

1. 选择 **保存并继续**。

### 添加 EC2 Auto Scaling 执行块
<a name="tutorial-rs-build-workflows-ec2"></a>

有关此执行块的更多信息，请参阅[亚马逊 EC2 Auto Scaling 群组执行块](ec2-auto-scaling-block.md)。

1. 选择**添加步骤**，然后选择**按顺序运行**。

1. 选择 **EC2 Auto Scaling 执行块**，然后选择**添加和编辑**。您可以借助此块开始增加被动区域的容量。

1. 在右窗格中，配置块：
   + **步骤名称**：输入“Scale”
   + **步骤描述**（可选）
   + 适用于 **us-east-1 的 Auto Scaling 群组 ARN：us-east-1** 中你的 ASG 的 ARN
   + us-west-2 的 A@@ **uto Scaling 群组 ARN：us-west-2 中你**的 ASG 的 ARN
   + **与来源区域容量匹配的百分比**：输入 100
   + **容量监控方法**：保留为“最近”
   + **超时**（可选）

   有关此执行块所需的 IAM 权限的信息，请参阅[EC2 Auto Scaling 执行区块示例策略](security_iam_region_switch_ec2_autoscaling.md)。

1. 选择**保存步骤**。

### 添加手动批准执行块
<a name="tutorial-rs-build-workflows-manual-approval-1"></a>

有关此执行块的更多信息，请参阅[手动审批执行块](manual-approval-block.md)。

1. 选择**添加步骤**。

1. 选择**手动批准审批执行块**并将其添加到设计窗口。通过此块，您可以继续操作之前进行人工验证。

1. 在右窗格中，配置块：
   + **步骤名称**：输入“Manual approval before setup”
   + **步骤描述**（可选）
   + **IAM 批准角色**：用户要批准执行所必需代入的角色
   + **超时**（可选）。超时后，执行将暂停，您可以选择重试、跳过或取消。

   有关此执行块所需的 IAM 权限的信息，请参阅[手动审批执行块示例策略](security_iam_region_switch_manual_approval.md)。

1. 选择**保存步骤**。

### 为维护页面添加自定义操作 Lambda 执行块
<a name="tutorial-rs-build-workflows-lambda-maintenance"></a>

有关此执行块的更多信息，请参阅[自定义操作 Lambda 执行块](custom-action-lambda-block.md)。

1. 选择**添加步骤**。

1. 选择**自定义操作 Lambda 执行块**，然后选择**添加和编辑**。此块将在要激活的区域中发布维护页面。

1. 在右窗格中，配置块：
   + **步骤名称**：输入“Display maintenance page”
   + **步骤描述**（可选）
   + **用于激活 us-east-1 的 Lambda ARN**：部署在 us-east-1 中的维护页面 Lambda 函数的 ARN
   + **用于激活 us-west-2 的 Lambda ARN**：部署在 us-west-2 中的维护页面 Lambda 函数的 ARN
   + **运行 Lambda 函数的区域**：选择**在激活区域运行**
   + **超时**（可选）
   + **重试间隔**（可选）

   有关此执行块所需的 IAM 权限的信息，请参阅[自定义操作 Lambda 执行块示例策略](security_iam_region_switch_lambda.md)。

1. 选择**保存步骤**。

### 添加 Aurora 全球数据库执行块
<a name="tutorial-rs-build-workflows-aurora"></a>

有关此执行块的更多信息，请参阅[Amazon Aurora Global Database 执行块](aurora-global-database-block.md)。

1. 选择**添加步骤**。

1. 选择 **Aurora Global Database 执行块**，然后选择**添加和编辑**。此块会触发 Aurora Global Database 切换（不会丢失数据）。有关更多信息，请参阅《Aurora 用户指南》**中的[在 Aurora Global Database 中使用切换或失效转移](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-global-database-disaster-recovery.html)。

1. 在右窗格中，配置块：
   + **步骤名称**：输入 **Aurora switchover**
   + **步骤描述**（可选）
   + **Aurora Global Database 标识符**：Aurora 集群的名称
   + **用于激活 us-east-1 的集群 ARN**：us-east-1 中的 Aurora 集群 ARN
   + **用于激活 us-west-2 的集群 ARN**：us-west-2 中的 Aurora 集群 ARN
   + **选择 Aurora 数据库的选项**：选择**切换**
   + **超时**（可选）

   有关此执行块所需的 IAM 权限的信息，请参阅[Aurora Global Database 执行块示例策略](security_iam_region_switch_aurora.md)。

1. 选择**保存步骤**。

### 添加 ARC 路由控制执行块
<a name="tutorial-rs-build-workflows-routing-control"></a>

有关此执行块的更多信息，请参阅[ARC 路由控制执行块](arc-routing-controls-block.md)。

1. 选择**添加步骤**。

1. 选择 **ARC 路由控制执行块**，然后选择**添加和编辑**。此块执行 DNS 故障转移以将流量转移到被动区域。

1. 在右窗格中，配置块：
   + **步骤名称**：输入 **Toggle DNS**
   + **步骤描述**（可选）
   + **激活 us-east-1 中使用的路由控制**：选择**添加路由控制**
   + **超时**：输入超时值。

1. 选择**添加路由控制**：
   + **路由控制 ARN**：控制 us-east-1 的路由控制的 ARN
   + **路由控制状态**：选择**开启**

1. 再次选择**添加路由控制**：
   + **路由控制 ARN**：控制 us-west-2 的路由控制的 ARN
   + **路由控制状态**：选择**关闭**

1. 选择**保存**。

1. **激活 us-west-2 中使用的路由控制**：选择**添加路由控制**

1. 选择**添加路由控制**：
   + **路由控制 ARN**：控制 us-west-2 的路由控制的 ARN
   + **路由控制状态**：选择**开启**

1. 再次选择**添加路由控制**：
   + **路由控制 ARN**：控制 us-east-1 的路由控制的 ARN
   + **路由控制状态**：选择**关闭**

1. 选择**保存**。

1. 选择**保存步骤**。

   有关此执行块所需的 IAM 权限的信息，请参阅[ARC 路由控制执行块策略示例](security_iam_region_switch_arc_routing.md)。

1. 选择**保存**。

## 步骤 3：执行计划
<a name="tutorial-rs-execute-plan"></a>

1. 在区域切换计划详细信息页面的右上角，选择**执行**。

1. 输入执行详细信息：
   + 选择要激活的区域。
   + 选择计划执行模式。
   + （可选）查看执行步骤。
   + 确认计划执行。

1. 选择**启动**。

1. 您可以在执行详细信息页面上查看计划执行的详细信息步骤。您可以看到计划执行中的每个步骤，包括开始时间、结束时间、资源 ARN 和日志消息。

受影响区域恢复后，您可以再次执行计划（更改您提供的参数）以激活原始区域，将应用程序操作切换回原始主区域。