

# 为同构迁移创建 IAM 资源
<a name="USER_DMS_migration-IAM"></a>

RDS 使用 Amazon DMS 迁移数据。为了访问数据库并迁移数据，Amazon DMS 会为同构数据迁移创建无服务器环境。在此环境中，Amazon DMS 需要访问 VPC 对等连接、路由表、安全组和其他 Amazon 资源。此外，Amazon DMS 将每个数据迁移的日志、指标和进度存储在 Amazon CloudWatch 中。要创建数据迁移项目，Amazon DMS 需要访问这些服务。

此外，Amazon DMS 需要访问代表一组用户凭证的密钥，以验证源和目标连接的数据库连接。

**注意**  
通过使用**从 EC2 实例迁移数据**操作，您可以使用 RDS 控制台生成这些 IAM 资源。如果您使用控制台生成的 IAM 资源，则跳过此步骤。

此过程需要以下 IAM 资源：

**Topics**
+ [为同构数据迁移创建 IAM 策略](#USER_DMS_migration-IAM.iam-policy)
+ [为同构数据迁移创建 IAM 角色](#USER_DMS_migration-IAM.iam-role)
+ [创建密钥访问策略和角色](USER_DMS_migration-IAM.secret-iam-role-policy.md)
+ [为 Amazon DMS 创建 IAM 角色以管理 Amazon VPC](USER_DMS_migration-IAM.dms-vpc-role.md)

## 为同构数据迁移创建 IAM 策略
<a name="USER_DMS_migration-IAM.iam-policy"></a>

在此步骤中，创建 IAM policy，向 Amazon DMS 提供 Amazon EC2 和 CloudWatch 资源的访问权限。接下来，创建 IAM 角色并附加此策略。

**为数据迁移创建 IAM 策略**

1. 登录到 Amazon Web Services 管理控制台，然后通过以下网址打开 IAM 控制台：[https://console.aws.amazon.com/iam/](https://console.amazonaws.cn/iam/)。

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

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

1. 在**创建策略**页面中，选择 **JSON** 选项卡。

1. 将下面的 JSON 粘贴到编辑器中。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "ec2:DescribeRouteTables",
                   "ec2:DescribeSecurityGroups",
                   "ec2:DescribeVpcPeeringConnections",
                   "ec2:DescribeVpcs",
                   "ec2:DescribePrefixLists",
                   "logs:DescribeLogGroups"
               ],
               "Resource": "*"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "servicequotas:GetServiceQuota"
               ],
               "Resource": "arn:aws:servicequotas:*:*:vpc/L-0EA8095F"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "logs:CreateLogGroup",
                   "logs:DescribeLogStreams"
               ],
               "Resource": "arn:aws:logs:*:*:log-group:dms-data-migration-*"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "logs:CreateLogStream",
                   "logs:PutLogEvents"
               ],
               "Resource": "arn:aws:logs:*:*:log-group:dms-data-migration-*:log-stream:dms-data-migration-*"
           },
           {
               "Effect": "Allow",
               "Action": "cloudwatch:PutMetricData",
               "Resource": "*"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "ec2:CreateRoute",
                   "ec2:DeleteRoute"
               ],
               "Resource": "arn:aws:ec2:*:*:route-table/*"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "ec2:CreateTags"
               ],
               "Resource": [
                   "arn:aws:ec2:*:*:security-group/*",
                   "arn:aws:ec2:*:*:security-group-rule/*",
                   "arn:aws:ec2:*:*:route-table/*",
                   "arn:aws:ec2:*:*:vpc-peering-connection/*",
                   "arn:aws:ec2:*:*:vpc/*"
               ]
           },
           {
               "Effect": "Allow",
               "Action": [
                   "ec2:AuthorizeSecurityGroupEgress",
                   "ec2:AuthorizeSecurityGroupIngress"
               ],
               "Resource": "arn:aws:ec2:*:*:security-group-rule/*"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "ec2:AuthorizeSecurityGroupEgress",
                   "ec2:AuthorizeSecurityGroupIngress",
                   "ec2:RevokeSecurityGroupEgress",
                   "ec2:RevokeSecurityGroupIngress"
               ],
               "Resource": "arn:aws:ec2:*:*:security-group/*"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "ec2:AcceptVpcPeeringConnection",
                   "ec2:ModifyVpcPeeringConnectionOptions"
               ],
               "Resource": "arn:aws:ec2:*:*:vpc-peering-connection/*"
           },
           {
               "Effect": "Allow",
               "Action": "ec2:AcceptVpcPeeringConnection",
               "Resource": "arn:aws:ec2:*:*:vpc/*"
           }
       ]
   }
   ```

------

1. 选择**下一步：标签**和**下一步：审核**。

1. 在**名称\***中输入 **HomogeneousDataMigrationsPolicy**，然后选择**创建策略**。

## 为同构数据迁移创建 IAM 角色
<a name="USER_DMS_migration-IAM.iam-role"></a>

在此步骤中，您将创建 IAM 角色，该角色提供对 Amazon Secrets Manager、Amazon EC2 和 CloudWatch 的访问权限。

**为数据迁移创建 IAM 角色**

1. 登录 Amazon Web Services 管理控制台，然后通过以下网址打开 IAM 控制台：[https://console.aws.amazon.com/iam/](https://console.amazonaws.cn/iam/)。

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

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

1. 在**选择可信实体**页面中，在**可信实体类型**下选择 **Amazon 服务**。对于**其他 Amazon 服务的应用场景**，选择 **DMS**。

1. 选中 **DMS** 复选框，然后选择**下一步**。

1. 在**添加权限**页面上，选择之前创建的 **HomogeneousDataMigrationsPolicy**。选择**下一步**。

1. 在**命名、检查并创建**页面上，在**角色名称**中输入 **HomogeneousDataMigrationsRole**，然后选择**创建角色**。

1. 在**角色**页面上，在**角色名称**中输入 **HomogeneousDataMigrationsRole**。选择 **HomogeneousDataMigrationsRole**。

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

1. 在**编辑信任策略**页面上，将以下 JSON 粘贴到编辑器中，替换现有文本。

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

****  

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

------

   在以上示例中，请用您的 Amazon Web Services 区域名称替换 {{your\_region}}。

   上述基于资源的策略为 Amazon DMS 服务主体提供了根据客户管理型 **HomogeneousDataMigrationsPolicy** 策略执行任务的权限。

1. 选择**更新策略**。