AWS Server Migration Service
用户指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

适用于 AWS SMS 的传统 IAM 角色

在引入 AWSServiceRoleForSMS 之前,已要求您创建一个服务角色和一个启动角色来向 AWS SMS 授予其所需的权限。您不再需要创建这些角色。

为 AWS SMS 配置服务角色

使用以下过程之一创建 IAM 角色,该角色向 AWS SMS 授予将迁移的资源放入 Amazon EC2 账户的权限。在提供 IAM 角色模板的 AWS 区域中,可以使用选项 1。如果您发现 AWS 区域中没有 AWS Server Migration Service 的模板,请继续执行选项 2。

选项 1:使用模板创建 AWS SMS IAM 角色

  1. 通过以下网址打开 IAM 控制台:https://console.amazonaws.cn/iam/

  2. 在导航窗格中,选择 RolesCreate role

  3. Choose the service that will use this role (选择将使用此角色的服务) 下,依次选择 SMSNext: Permissions (下一步: 权限)

  4. Attached permissions policies (附加的权限策略) 下,确认策略 ServerMigrationServiceRole 可见并选择 Next: Review (下一步: 审核)

  5. Review (审核) 下面,为 Role name (角色名称) 输入 sms

    注意

    或者,您也可以应用不同的名称。不过,每次创建复制作业或应用程序时,您必须明确指定角色名称。

  6. 选择创建角色。您现在应在可用角色列表中看到 sms 角色。

在不提供 IAM 角色模板的 AWS 区域中,请使用下文的选项。此选项也可以在所有区域中用作选项 1 的手动替代项。

选项 2:手动创建 AWS SMS IAM 角色

  1. 创建一个名为 trust-policy.json 的本地文件,其中包含以下内容:

    { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "sms.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "sts:ExternalId": "sms" } } } ] }
  2. 创建一个名为 role-policy.json 的本地文件,其中包含以下内容:

    { "Version":"2012-10-17", "Statement":[ { "Action":[ "cloudformation:CreateChangeSet", "cloudformation:CreateStack", "cloudformation:DeleteStack", "cloudformation:ExecuteChangeSet" ], "Resource":"arn:aws:cloudformation:*:*:stack/sms-app-*/*", "Effect":"Allow", "Condition":{ "ForAllValues:StringLikeIfExists":{ "cloudformation:ResourceTypes":[ "AWS::EC2::*" ] } } }, { "Action":[ "cloudformation:DeleteChangeSet", "cloudformation:DescribeChangeSet", "cloudformation:DescribeStackEvents", "cloudformation:DescribeStackResources", "cloudformation:GetTemplate" ], "Resource":"arn:aws:cloudformation:*:*:stack/sms-app-*/*", "Effect":"Allow" }, { "Action":[ "cloudformation:DescribeStacks", "cloudformation:ValidateTemplate", "cloudformation:DescribeStackResource", "s3:ListAllMyBuckets" ], "Resource":"*", "Effect":"Allow" }, { "Action":[ "s3:CreateBucket", "s3:DeleteBucket", "s3:DeleteObject", "s3:GetBucketAcl", "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:PutObject", "s3:PutObjectAcl", "s3:PutLifecycleConfiguration", "s3:ListAllMyBuckets" ], "Resource":"arn:aws:s3:::sms-app-*", "Effect":"Allow" }, { "Action":[ "sms:CreateReplicationJob", "sms:DeleteReplicationJob", "sms:GetReplicationJobs", "sms:GetReplicationRuns", "sms:GetServers", "sms:ImportServerCatalog", "sms:StartOnDemandReplicationRun", "sms:UpdateReplicationJob" ], "Resource":"*", "Effect":"Allow" }, { "Action":[ "ec2:ModifySnapshotAttribute", "ec2:CopySnapshot", "ec2:CopyImage", "ec2:Describe*", "ec2:DeleteSnapshot", "ec2:DeregisterImage", "ec2:CreateTags", "ec2:DeleteTags" ], "Resource":"*", "Effect":"Allow" }, { "Action":"iam:GetRole", "Resource":"*", "Effect":"Allow" }, { "Action":"iam:PassRole", "Resource":"*", "Effect":"Allow", "Condition":{ "StringLike":{ "iam:AssociatedResourceArn":"arn:aws:cloudformation:*:*:stack/sms-app-*/*" } } } ] }
  3. 在命令提示符处,转到存储两个 JSON 策略文件的目录,并运行以下命令来创建 AWS SMS 服务角色:

    aws iam create-role --role-name sms --assume-role-policy-document file://trust-policy.json aws iam put-role-policy --role-name sms --policy-name sms --policy-document file://role-policy.json

注意

您的 AWS CLI 用户必须对 IAM 拥有权限。可通过将 IAMFullAccess 托管策略附加到 AWS CLI 用户来授予这些权限。有关管理 IAM 用户和权限的信息,请参阅在您的 AWS 账户中创建 IAM 用户

为 AWS SMS 配置启动角色

如果您计划启动应用程序,则需要 AWS SMS 启动角色。您需要使用 PutAppLaunchConfiguration API 分配此角色。调用 LaunchApp API 时,AWS CloudFormation 将使用该角色。

使用以下过程之一配置此角色。在不提供 AWS SMS 启动角色模板的 AWS 区域中使用选项 2,或者在所有区域中将选项 2 用作选项 1 的手动替代项。

选项 1:使用模板创建 AWS SMS 启动角色

  1. 通过以下网址打开 IAM 控制台:https://console.amazonaws.cn/iam/

  2. 在导航窗格中,选择 RolesCreate role

  3. Choose the service that will use this role (选择将使用此角色的服务) 下,依次选择 CloudFormationNext: Permissions (下一步: 权限)

  4. Attached permissions policies (附加的权限策略) 下,确认策略 ServerMigrationServiceLaunchRole 可见并选择 Next: Review (下一步: 审核)

  5. Review (审核) 下面,为 Role name (角色名称) 输入 sms-launch

    注意

    或者,您也可以应用不同的名称。不过,每次为应用程序创建启动配置时,您必须明确指定角色名称。

  6. 选择创建角色。您现在应在可用角色列表中看到 sms-launch 角色。

选项 2:手动创建 AWS SMS 启动角色

  1. 创建一个名为 trust-policy.json 的本地文件,其中包含以下内容:

    { "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"cloudformation.amazonaws.com" }, "Action":"sts:AssumeRole" } ] }
  2. 创建一个名为 role-policy.json 的本地文件,其中包含以下内容:

    { "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "ec2:ModifyInstanceAttribute", "ec2:StopInstances", "ec2:StartInstances", "ec2:TerminateInstances" ], "Resource":"*", "Condition":{ "ForAllValues:StringLike":{ "ec2:ResourceTag/aws:cloudformation:stack-id":"arn:aws:cloudformation:*:*:stack/sms-app-*/*" } } }, { "Effect":"Allow", "Action":"ec2:CreateTags", "Resource":"arn:aws:ec2:*:*:instance/*" }, { "Effect":"Allow", "Action":[ "ec2:RunInstances", "ec2:Describe*" ], "Resource":"*" } ] }
  3. 在命令提示符处,转到存储两个 JSON 策略文件的目录,并运行以下命令来创建 AWS SMS 服务角色:

    aws iam create-role --role-name sms-launch --assume-role-policy-document file://trust-policy.json aws iam put-role-policy --role-name sms-launch --policy-name sms --policy-document file://role-policy.json