AWSSupport-CopyEC2Instance - AWS Systems Manager 自动化运行手册参考

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

AWSSupport-CopyEC2Instance

描述

AWSSupport-CopyEC2Instance 运行手册为知识中心文章如何将我的 EC2 实例移动到另一个子网、可用区或 VPC?中概述的过程提供了自动化的解决方案 自动化的分支取决于您为 RegionSubnetId 参数指定的值。

如果您为 SubnetId 参数指定一个值但未为 Region 参数指定值,自动化将创建目标实例的 Amazon Machine Image (AMI),并从您指定的子网 AMI 启动一个新实例。

如果您为 SubnetId 参数和 Region 参数指定一个值,自动化将创建目标实例的 AMI,将 AMI 复制到您指定的 AWS 区域,并从您指定的子网中的 AMI 启动一个新实例。

如果您为 Region 参数指定一个值但未为 SubnetId 参数指定值,自动化将创建目标实例的 AMI,将 AMI 复制到您指定的区域,并从您指定的区域中的虚拟私有云(VPC)的默认子网中的 AMI 启动一个新实例。

如果没有为 RegionSubnetId 参数指定任何值,自动化将创建目标实例的 AMI,并从 VPC 的默认子网中的 AMI启动一个新实例。

要将 AMI 复制到其他区域,您必须为 AutomationAssumeRole 参数提供一个值。如果在 waitForAvailableDestinationAmi 步骤期间自动化超时,则 AMI 可能仍在复制。在这种情况下,您可以等待复制完成,然后手动启动该实例。

在运行此自动化之前,请注意以下事项:

  • AMI 是基于Amazon Elastic Block Store (Amazon EBS) 快照。对于之前没有快照的大型文件系统,创建 AMI 可能需要几个小时。要缩短 AMI 创建时间,请在创建 AMI 之前先创建一个 Amazon EBS 快照。

  • 创建 AMI 不会为实例上的实例存储卷创建快照。有关将实例存储卷备份到 Amazon EBS 的信息,请参阅如何将 Amazon EC2 实例上的实例存储卷备份到 Amazon EBS?

  • 新的 Amazon EC2 实例具有不同的私有 IPv4 或公有 IPv6 IP 地址。您必须使用分配给新实例的新 IP 地址,更新对旧 IP 地址的所有引用(例如,在 DNS 条目中)。如果您在源实例上使用弹性 IP 地址,请务必将其附加到新实例。

  • 当副本启动并尝试联系域时,可能会出现域安全标识符 (SID) 冲突问题。在捕获 AMI 之前,请使用 Sysprep 或从域中移除已加入域的实例,以防止出现冲突问题。有关更多信息,请参阅如何使用 Sysprep 创建和安装自定义的可重复使用的 Windows AMI?

运行此自动化(控制台)

重要

我们不建议使用此运行手册来复制 Microsoft Active Directory Domain Controller 实例。

文档类型

自动化

所有者

Amazon

平台

Linux、macOS、Windows

参数

  • AutomationAssumeRole

    类型:字符串

    描述:(可选)允许 Systems Manager Automation 代表您执行操作 AWS Identity and Access Management (IAM) 角色的 Amazon 资源名称(ARN)。如果未指定任何角色,则 Systems Manager Automation 使用启动此运行手册的用户的权限。

  • InstanceId

    类型:字符串

    描述:(必需)要复制的实例的 ID。

  • KeyPair

    类型:字符串

    描述:(可选)要与新复制的实例关联的密钥对。如果您要将实例复制到其他区域,请确保指定的区域存在密钥。

  • 区域

    类型:字符串

    描述:(可选)要将实例复制到的区域。如果您为此参数指定一个值,但未为 SubnetIdSecurityGroupIds 参数指定值,自动化将尝试使用默认安全组在默认的 VPC 中启动实例。如果在目的地区域启用了 EC2-Classic,启动将失败。

  • SubnetId

    类型:字符串

    描述:(可选)要将实例复制到的子网的 ID。如果在目的地区域启用了 EC2-Classic,则必须为此参数提供一个值。

  • InstanceType

    类型:字符串

    描述:(可选)复制的实例应当启动的目标实例类型。如果您没有为此参数指定一个值,则使用源实例类型。如果要将实例复制到的区域不支持源实例类型,自动化将失败。

  • SecurityGroupIds

    类型:字符串

    描述:(可选)要与已复制实例关联的安全组 ID 的逗号分隔列表。如果您未为此参数指定一个值,且该实例未被复制到其他区域,则使用与源实例关联的安全组。如果您要将实例复制到其他区域,则使用目的地区域中默认 VPC 的默认安全组。

  • KeepImageSourceRegion

    类型:布尔值

    有效值:true | false

    默认值:True

    描述:(可选)如果您为此参数指定 true,则自动化不会删除源实例的 AMI。如果您为此参数指定 false,则自动化会取消注册 AMI 并删除关联的快照。

  • KeepImageDestinationRegion

    类型:布尔值

    有效值:true | false

    默认值:True

    描述:(可选)如果您为此参数指定 true,则自动化不会删除将复制到的您指定目标区域的 AMI。如果您为此参数指定 false,则自动化会取消注册 AMI 并删除关联的快照。

  • NoRebootInstanceBeforeTakingImage

    类型:布尔值

    有效值:true | false

    原定设置值:false

    描述:(可选)如果您为此参数指定 true,则在创建 AMI 之前源实例不会重新启动。如果使用此选项,则无法保证所创建映像上的文件系统的完整性。

所需的 IAM 权限

AutomationAssumeRole 参数需要执行以下操作才能成功使用运行手册。

  • ec2:CreateImage

  • ec2:DeleteSnapshot

  • ec2:DeregisterImage

  • ec2:DescribeInstances

  • ec2:DescribeImages

  • ec2:RunInstances

如果您要将实例复制到其他区域,则还需要具有以下权限。

  • ec2:CopyImage

文档步骤

  • describeOriginalInstanceDetails - 从要复制的实例收集详细信息。

  • assertrootVolumeiSebs - 检查根卷设备类型是否为,如果不是ebs,则结束自动化。

  • evalInputParameters - 评估为输入参数提供的值。

  • createLocalAmi - 创建源实例的 AMI。

  • tagLocalAmi - 标记在上一步创建的 AMI。

  • branchassertRegionisSame - 根据将实例复制到相同区域内还是不同区域中进行分支。

  • branchAssertSameRegionWithKeyPair - 根据是否为在同一区域内要复制的实例的 KeyPair 参数提供了值进行分支。

  • sameRegionLaunchInstanceWithKeyPair - 使用您指定的密钥对从位于您指定的同一子网或子网中的源实例的 AMI 启动一个 Amazon EC2 实例。

  • sameRegionLaunchInstanceWithoutKeyPair - 无需密钥对,从位于同一子网或您指定的子网中的源实例的 AMI 启动一个 Amazon EC2 实例。

  • copyAmiToRegion - 将 AMI 复制到目标区域。

  • waitForAvailableDestinationAmi - 等待复制的 AMI 状态变为 available

  • destinationRegionLaunchInstance - 使用复制的 AMI 实例启动一个 Amazon EC2 实例。

  • branchassertDestinationAmitoDelete - 根据你为参数提供的值进行分支。KeepImageDestinationRegion

  • deregisterDestinationAmiAndDeleteSnapshots - 取消注册复制的 AMI 并删除关联的快照。

  • branchassertSourceAmitoDelete - 根据你为参数提供的值进行分支。KeepImageSourceRegion

  • deregisterSourceAmiAndDeleteSnapshots - 取消注册 AMI 从源实例创建的快照并删除关联的快照。

  • sleep - 使自动化休眠 2 秒钟。这是最终步骤。

输出

sameRegionLaunchInstanceWithKeyPair.InstanceIds

sameRegionLaunchInstanceWithoutKeyPair.InstanceIds

destinationRegionLaunchInstance.DestinationInstanceId