

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

# 满足使用 DMS 架构转换的先决条件
<a name="set-up"></a>

要设置 DMS 架构转换，请完成以下任务。然后，您可以设置实例配置文件、添加数据提供程序并创建迁移项目。

**Topics**
+ [基于 Amazon VPC 创建 VPC](#set-up-vpc)
+ [创建 Amazon S3 存储桶](#set-up-s3-bucket)
+ [将数据库凭据存储在 AWS Secrets Manager](#set-up-secrets)
+ [创建 IAM policy](#set-up-iam-policies)
+ [创建 IAM 角色](#set-up-iam-roles)

## 基于 Amazon VPC 创建 VPC
<a name="set-up-vpc"></a>

在此步骤中，您将在中创建虚拟私有云 (VPC) AWS 账户。此 VPC 基于 Amazon Virtual Private Cloud（Amazon VPC）服务，并包含 AWS 资源。

**为 DMS 架构转换创建 VPC**

1. 登录 AWS 管理控制台 并打开 Amazon VPC 控制台，网址为[https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)。

1. 选择**创建 VPC**。

1. 在**创建 VPC** 页面上，输入以下设置：
   + **要创建的资源** – **VPC 等**
   + **名称标签自动生成** – 选择**自动生成**，然后输入一个全局唯一名称。例如，输入 **sc-vpc**。
   + **IPv4 CIDR 块 —** **10.0.1.0/24**
   + **NAT 网关** – **在 1 个可用区中**
   + **VPC 端点** – **无**

1. 保留其余默认设置，然后选择**创建 VPC**。

1. 选择**子网**，记下您的公有子网和私有子网 IDs。

   要连接到 Amazon RDS 数据库，请使用包含公共子网的子网组。

   要连接到本地数据库，请使用包含专用子网的子网组。有关更多信息，请参阅 [为 DMS 架构转换创建实例配置文件](getting-started-instance.md)。

1. 选择 **NAT 网关**。选择您的 **NAT 网关**，并记下**弹性 IP 地址**。

   配置您的网络，确保它 AWS DMS 可以从此 NAT 网关的公有 IP 地址访问您的源本地数据库。有关更多信息，请参阅 [使用互联网连接到 VPC](instance-profiles-network.md#instance-profiles-network-internet)。

当您在 Amazon RDS 上创建实例配置文件和目标数据库时，请使用此 VPC。

## 创建 Amazon S3 存储桶
<a name="set-up-s3-bucket"></a>

要存储迁移项目的信息，可创建 Amazon S3 存储桶。DMS 架构转换使用此 Amazon S3 存储桶来保存条目，如评测报告、转换后的 SQL 代码、有关数据库架构对象的信息等等。

**为 DMS 架构转换创建 Amazon S3 存储桶**

1. 登录 AWS 管理控制台 并打开 Amazon S3 控制台，网址为[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)。

1. 选择**创建存储桶**。

1. 在**创建存储桶**页面上，为 S3 存储桶选择一个全局唯一名称。例如，输入 **sc-s3-bucket**。

1. 对于 **AWS 区域**，选择区域。

1. 对于**存储桶版本控制**，选择**启用**。

1. 保留其余默认设置，然后选择**创建存储桶**。

**注意**  
DMS 架构转换（SC）仅适用于使用具有 Amazon S3 托管式密钥的服务器端加密（SSE-S3）的 S3 存储桶。SC 目前不支持其他加密配置，包括使用 AWS KMS 的服务器端加密 (SSE-KMS)、客户提供的密钥 (SSE-C) 或客户端加密，因此无法访问 S3 存储桶。如果使用其他加密方法，则必须使用 SSE-S3 创建单独的 S3 存储桶以用于 DMS 架构转换。

## 将数据库凭据存储在 AWS Secrets Manager
<a name="set-up-secrets"></a>

将您的源数据库和目标数据库凭据存储在中 AWS Secrets Manager。确保将这些秘密复制到您的 AWS 区域. 在迁移项目中，DMS 架构转换将使用这些密钥连接到数据库。

**将您的数据库凭据存储在 AWS Secrets Manager**

1. 登录 AWS 管理控制台 并打开 AWS Secrets Manager 控制台，网址为[https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/)。

1. 选择**存储新密钥**。

1. 将打开**选择密钥类型**页面。对于**密钥类型**，选择要存储的数据库凭证类型：
   + **适用于 Amazon RDS 数据库的凭证** – 选择此选项，存储适用于 Amazon RDS 数据库的凭证。对于**凭证**，输入数据库的凭证。对于**数据库**，选择您的数据库。
   + **适用于其他数据库的凭证** – 选择此选项，存储适用于 Oracle 或 SQL Server 源数据库的凭证。对于**凭证**，输入数据库的凭证。
   + **其他类型的密钥** – 选择此选项，仅存储用于连接数据库的用户名和密码。选择**添加行**，以添加两个键值对。请务必使用 **username** 和 **password** 作为密钥名称。对于与这些密钥相关的值，输入数据库的凭证。

1. 对于**加密密钥**，选择 Secrets Manager 用于加密密 AWS KMS 钥值的密钥。选择**下一步**。

1. 在**配置密钥**页面上，输入描述性的**密钥名称**。例如，输入 **sc-source-secret** 或 **sc-target-secret**。

1. 选择**复制密钥**，然后在 **AWS 区域**中选择区域。选择**下一步**。

1. 在**配置旋转**页面，选择**下一步**。

1. 在**审核**页面上，审核密钥详细信息，然后选择**存储**。

要存储源数据库和目标数据库的凭证，请重复上述步骤。

## 创建 IAM policy
<a name="set-up-iam-policies"></a>

**创建用于访问 Amazon S3 的 IAM 策略**

1. 登录 AWS 管理控制台 并打开 IAM 控制台，网址为[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

1. 在导航窗格中，选择**策略**。

1. 选择**创建策略**。

1. 在**选择服务**页面上，从列表中选择 **Amazon S3**。

1. 在**允许的操作**中，选择 `PutObject`、`GetObject`、`GetObjectVersion`、`GetBucketVersioning`、`GetBucketLocation`、`ListBucket`。

1. 在**资源**中，指定您在上一部分中创建的存储桶的 ARN。选择**下一步**。

1. 在**查看并创建**页面上，输入描述性名称。例如：`sc-s3-policy`。然后选择**创建策略**。

**为 DMS 架构转换访问创建 IAM 策略 AWS Secrets Manager**

1. 登录 AWS 管理控制台 并打开 IAM 控制台，网址为[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

1. 在导航窗格中，选择**策略**。

1. 选择**创建策略**。

1. 在**选择服务**页面上，从列表中选择 **Secrets Manager**。

1. 选择**下一步**。将打开**添加权限**页面。

1. 在**允许的操作**中，选择 `GetSecretValue` 和 `DescribeSecret`。

1. 在**查看并创建**页面上，输入描述性名称。例如：`sc-secrets-manager-policy`。然后选择**创建策略**。

## 创建 IAM 角色
<a name="set-up-iam-roles"></a>

创建要在迁移项目中使用的 AWS Identity and Access Management (IAM) 角色。DMS 架构转换使用这些 IAM 角色，访问 Amazon S3 存储桶以及存储在 AWS Secrets Manager中的数据库凭证。

**创建 IAM 角色以提供对 Amazon S3 存储桶的访问权限**

1. 登录 AWS 管理控制台 并打开 IAM 控制台，网址为[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

1. 在导航窗格中，选择**角色**。

1. 选择**创建角色**。

1. 在**选择可信实体**页面上，选择 **AWS 服务**。选择 **DMS**。

1. 选择**下一步**。将打开**添加权限**页面。

1. 在**筛选策略**中，输入 **S3**。选择您在上一节中创建的 **sc-s3-policy** 策略。

1. 选择**下一步**。将打开**命名、检查并创建**页面。

1. 对于**角色名称**，输入一个描述性名称。例如，输入 **sc-s3-role**。选择**创建角色**。

1. 在**角色**页面上，在**角色名称**中输入 **sc-s3-role**。选择 **sc-s3-role**。

1. 在 **sc-s3-role** 页面上，选择**信任关系**选项卡。选择**编辑信任策略**。

1. 这些 AWS DMS 区域服务主体采用以下格式：

   ```
   dms.region-name.amazonaws.com
   ```

   将 `region-name` 替换为您所在区域的名称，例如 `us-east-1`：以下代码示例演示了 `us-east-1` 区域的主体：

   ```
   dms.us-east-1.amazonaws.com
   ```

   以下代码示例显示了用于访问 AWS DMS 架构转换的信任策略：

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": "dms.us-east-1.amazonaws.com"
               },
               "Action": "sts:AssumeRole"
           }
       ]
   }
   ```

------

**创建提供访问权限的 IAM 角色 AWS Secrets Manager**

1. 登录 AWS 管理控制台 并打开 IAM 控制台，网址为[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

1. 在导航窗格中，选择**角色**。

1. 选择**创建角色**。

1. 在**选择可信实体**页面上，选择 **AWS 服务**。选择 **DMS**。

1. 选择**下一步**。将打开**添加权限**页面。

1. 在**筛选策略**中，输入 `s3`。选择**sc-secrets-manager-policy**您在上一节中创建的。

1. 选择**下一步**。将打开**命名、检查并创建**页面。

1. 对于**角色名称**，输入一个描述性名称。例如，输入 **sc-secrets-manager-role**。选择**创建角色**。

1. 在**角色**页面上，在**角色名称**中输入 **sc-secrets-manager-role**。选择 **sc-secrets-manager-role**。

1. 在**sc-secrets-manager-role**页面上，选择 “**信任关系” 选项卡**。选择**编辑信任策略**。

1. 在**编辑信任策略**页面上，编辑要使用的角色`schema-conversion.dms.amazonaws.com`和您的 AWS DMS 区域服务主体作为可信实体的信任关系。该 AWS DMS 区域服务主体采用以下格式：

   ```
   dms.region-name.amazonaws.com
   ```

   将 `region-name` 替换为您所在区域的名称，例如 `us-east-1`：以下代码示例演示了 `us-east-1` 区域的主体：

   ```
   dms.us-east-1.amazonaws.com
   ```

   以下代码示例显示了用于访问 AWS DMS 架构转换的信任策略：

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": "dms.us-east-1.amazonaws.com"
               },
               "Action": "sts:AssumeRole"
           }
       ]
   }
   ```

------

**创建用于 AWS CLI 或 AWS DMS API 的 I `dms-vpc-role` AM 角色**

1. 使用以下 IAM policy 创建 JSON 文件。将 JSON 文件命名为 `dmsAssumeRolePolicyDocument.json`。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": "dms.amazonaws.com"
               },
               "Action": "sts:AssumeRole"
           }
       ]
   }
   ```

------

   然后，使用以下命令使用 AWS CLI 创建角色：

   ```
   aws iam create-role --role-name dms-vpc-role --assume-role-policy-document file://dmsAssumeRolePolicyDocument.json                    
   ```

1. 使用以下命令将 `AmazonDMSVPCManagementRole` 策略附加到 `dms-vpc-role`：

   ```
   aws iam attach-role-policy --role-name dms-vpc-role --policy-arn arn:aws:iam::aws:policy/service-role/AmazonDMSVPCManagementRole   
   ```

**创建用于 AWS CLI 或 AWS DMS API 的 I `dms-cloudwatch-logs-role` AM 角色**

1. 使用以下 IAM policy 创建 JSON 文件。将 JSON 文件命名为 `dmsAssumeRolePolicyDocument2.json`。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": "dms.amazonaws.com"
               },
               "Action": "sts:AssumeRole"
           }
       ]
   }
   ```

------

   然后，使用以下命令使用 AWS CLI 创建角色：

   ```
   aws iam create-role --role-name dms-cloudwatch-logs-role --assume-role-policy-document file://dmsAssumeRolePolicyDocument2.json
   ```

1. 使用以下命令将 `AmazonDMSCloudWatchLogsRole` 策略附加到 `dms-cloudwatch-logs-role`：

   ```
   aws iam attach-role-policy --role-name dms-cloudwatch-logs-role --policy-arn arn:aws:iam::aws:policy/service-role/AmazonDMSCloudWatchLogsRole
   ```