AWS Database Migration Service
用户指南 (版本 API Version 2016-01-01)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

创建 IAM 角色以用于 AWS CLI 和 AWS DMS API

如果使用 AWS CLI 或 AWS DMS API 进行数据库迁移,则首先必须添加三个 IAM 角色到您的 AWS 账户,然后才能使用 AWS DMS 的功能。其中两个角色为 dms-vpc-roledms-cloudwatch-logs-role。如果使用 Amazon Redshift 作为目标数据库,还必须添加 IAM 角色 dms-access-for-endpoint 到您的 AWS 账户。

对托管策略的更新是自动的。如果您为 IAM 角色使用自定义策略,请确保定期在此文档中检查对托管策略的更新。您可以使用 get-policyget-policy-version 命令的组合查看托管策略的详细信息。

例如,以下 get-policy 命令检索角色上的信息。

aws iam get-policy --policy-arn arn:aws:iam::aws:policy/service-role/AmazonDMSVPCManagementRole

命令返回的信息如下所示。

{ "Policy": { "PolicyName": "AmazonDMSVPCManagementRole", "Description": "Provides access to manage VPC settings for AWS managed customer configurations", "CreateDate": "2015-11-18T16:33:19Z", "AttachmentCount": 1, "IsAttachable": true, "PolicyId": "ANPAJHKIGMBQI4AEFFSYO", "DefaultVersionId": "v3", "Path": "/service-role/", "Arn": "arn:aws:iam::aws:policy/service-role/AmazonDMSVPCManagementRole", "UpdateDate": "2016-05-23T16:29:57Z" } }

以下 get-policy-version 命令检索策略信息。

aws iam get-policy-version --policy-arn arn:aws:iam::aws:policy/service-role/AmazonDMSVPCManagementRole --version-id v3

命令返回的信息如下所示。

{ "PolicyVersion": { "CreateDate": "2016-05-23T16:29:57Z", "VersionId": "v3", "Document": { "Version": "2012-10-17", "Statement": [ { "Action": [ "ec2:CreateNetworkInterface", "ec2:DescribeAvailabilityZones", "ec2:DescribeInternetGateways", "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ec2:DescribeVpcs", "ec2:DeleteNetworkInterface", "ec2:ModifyNetworkInterfaceAttribute" ], "Resource": "*", "Effect": "Allow" } ] }, "IsDefaultVersion": true } }

AmazonDMSCloudWatchLogsRoleAmazonDMSRedshiftS3Role 托管策略上可使用相同的命令来获取信息。

注意

如果使用 AWS DMS 控制台进行数据库迁移,这些角色将自动添加到您的 AWS 账户。

以下过程创建 dms-vpc-roledms-cloudwatch-logs-roledms-access-for-endpoint IAM 角色。

创建用于 AWS CLI 或 AWS DMS API 的 dms-vpc-role IAM 角色

  1. 使用以下 IAM 策略创建 JSON 文件。将 JSON 文件命名为 dmsAssumeRolePolicyDocument.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
  2. 使用以下命令将 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 的 dms-cloudwatch-logs-role IAM 角色

  1. 使用以下 IAM 策略创建 JSON 文件。将 JSON 文件命名为 dmsAssumeRolePolicyDocument2.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
  2. 使用以下命令将 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

如果使用 Amazon Redshift 作为目标数据库,则必须创建 IAM 角色 dms-access-for-endpoint 以提供对 Amazon S3 (S3) 的访问权限。

创建 dms-access-for-endpoint IAM 角色以用于将 Amazon Redshift 作为目标数据库

  1. 使用以下 IAM 策略创建 JSON 文件。将 JSON 文件命名为 dmsAssumeRolePolicyDocument3.json

    { "Version": "2012-10-17", "Statement": [ { "Sid": "1", "Effect": "Allow", "Principal": { "Service": "dms.amazonaws.com" }, "Action": "sts:AssumeRole" }, { "Sid": "2", "Effect": "Allow", "Principal": { "Service": "redshift.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  2. 使用 AWS CLI 通过以下命令创建角色。

    aws iam create-role --role-name dms-access-for-endpoint --assume-role-policy-document file://dmsAssumeRolePolicyDocument3.json
  3. 使用以下命令将 AmazonDMSRedshiftS3Role 策略附加到 dms-access-for-endpoint 角色。

    aws iam attach-role-policy --role-name dms-access-for-endpoint \ --policy-arn arn:aws:iam::aws:policy/service-role/AmazonDMSRedshiftS3Role

现在,您应该准备好了 IAM 策略来使用 AWS CLI 或 AWS DMS API。