View a markdown version of this page

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

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

AWSSupport-CloneXenEC2InstanceAndMigrateToNitro

描述

该AWSSupport-CloneXenEC2InstanceAndMigrateToNitro运行手册克隆、准备和迁移目前在亚马逊 EC2 Xen 平台上运行的克隆亚马逊弹性计算云(亚马逊 EC2)Linux 实例,使其在亚马逊 EC2 Nitro 平台上运行。这种自动化分为三个不同的分支:

  • 初步检查:评估继续迁移的所有先决条件,包括检查目标 Amazon EC2 实例是否已在 Nitro 平台上运行、确定生命周期状态、验证操作系统以及验证 Systems Manager 连接。

  • 测试:在继续操作之前,AMI从目标 Amazon EC2 实例创建测试并启动测试 Amazon EC2 实例以验证迁移过程。

  • CloneAndMigrate: 创建目标 Amazon EC2 实例的克隆,安装必要的驱动程序,为 Nitro 平台配置系统,并将实例类型更改为所需的 Nitro 类型。

重要

在批准停止目标 Amazon EC2 实例之前,请确保该实例上运行的所有应用程序均已正常关闭。如果 Amazon EC2 实例没有关联的弹性 IP 地址,则一旦停止并启动该实例,自动公有 IPv4 地址就会发生变化。

重要

免责声明:执行本操作手册可能会向您的账户收取额外费用,例如亚马逊 EC2 实例、亚马逊 EBS Volumes & s。AMI请参阅亚马逊 EC2 定价和亚马逊 EBS 定价了解更多详情。

重要

先决条件

目标 Amazon EC2 实例需要出站访问存储库才能安装驱动程序和依赖项kernel-devel,例如gcc、patch、、rpm-build、wget、dracut、make、linux-headers、,并在需要时unzip使用包管理器。

受支持的操作系统

  • Red Hat Enterprise Linux(RHEL)8 和 9

  • Amazon Linux 2 和 AL2023

  • Ubuntu 服务器 18.04 LTS、20.04 和 22.04

  • Debian 11 和 12(仅限AWS 分区)

  • SUSE12SP5 和 SUSE15SP (5,6)

如何工作?

该运行手册执行以下高级步骤:

  • 验证先决条件并检查实例是否适合迁移。

  • 创建和测试AMI以确保迁移成功。

  • 启用增强联网 (ENA) 属性并安装最新的 ENA 驱动程序。

  • 在 initramfs 中验证和配置 NVMe 模块。

  • 分析和修改/etc/fstab ,将设备名称替换为 UUID。

  • 禁用可预测的接口命名并删除永久网络规则。

  • 将克隆的实例类型更改为所需的 Nitro 类型。

  • 创建可用作启动 Nitro 实例的黄金映像的最终AMI版本。

运行此自动化(控制台)

文档类型

自动化

所有者

Amazon

平台

Linux

参数

所需的 IAM 权限

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

  • autoscaling:DescribeAutoScalingInstances

  • ec2:CreateImage

  • ec2:CreateTags

  • ec2:DescribeImages

  • ec2:DescribeInstanceAttribute

  • ec2:DescribeInstances

  • ec2:DescribeInstanceStatus

  • ec2:DescribeInstanceTypeOfferings

  • ec2:DescribeInstanceTypes

  • ec2:DeregisterImage

  • ec2:ModifyInstanceAttribute

  • ec2:RunInstances

  • ec2:StartInstances

  • ec2:StopInstances

  • ec2:TerminateInstances

  • iam:PassRole

  • sns:Publish

  • ssm:DescribeAutomationExecutions

  • ssm:DescribeInstanceInformation

  • ssm:SendCommand

示例 IAM 策略:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "autoscaling:DescribeAutoScalingInstances", "ec2:CreateImage", "ec2:CreateTags", "ec2:DescribeImages", :ec2:DescribeInstanceAttribute:, "ec2:DescribeInstances", "ec2:DescribeInstanceStatus", "ec2:DescribeInstanceTypes", "ec2:DeregisterImage", "ec2:ModifyInstanceAttribute", "ec2:RunInstances", "ec2:StartInstances", "ec2:StopInstances", "ec2:TerminateInstances", "iam:PassRole", "ssm:DescribeAutomationExecutions", "ssm:DescribeInstanceInformation", "ssm:SendCommand" ], "Resource": "*" } ] }

说明

按照这些步骤对自动化进行配置:

  1. 导航到 AWSSupport-CloneXenEC2InstanceAndMigrateToNitro “系统管理器” 下的 “文档”。

  2. 选择 Execute automation。

  3. 对于输入参数,输入以下内容:

    • AutomationAssumeRole (可选):

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

      • 类型:AWS::IAM::Role::Arn

    • TargetInstanceId (必填):

      • 描述:(必填)您要迁移到 Nitro 平台的目标 Amazon EC2 实例的实例 ID。

      • 类型:AWS::EC2::Instance::Id

    • NitroInstanceType (可选):

      • 描述:(可选)输入目标 Nitro 实例类型。仅支持 Nitro M5、M6、C5、C6、R5、R6 和 T3 实例(例如 t3.small)。默认值:m5.xlarge。

      • 类型:String

      • 允许的模式:^(m5a?z?d?n?|c5a?d?n?|r5a?d?n?b?|(c|m|r)6(a|i)?d?)\\.(2|4|8|12|16|24|32)?xlarge$|^t3a?\\.((x|2x)?large|nano|micro|small|medium)$

      • 默认值:m5.xlarge

    • SNSTopicArn (必填):

      • 描述:(必填)提供亚马逊 SNS 主题的 ARN 以获取批准通知。此 Amazon SNS 主题用于在自动化执行期间发送批准通知。

      • 类型:String

      • 允许的模式:^arn:(aws|aws-cn|aws-us-gov|aws-iso(-[a-z])?):sns:(us(-gov|-isob?)?|ap|ca|af|me|cn|eu|sa)-(central|(north|south)?(east|west)?)-\\d:\\d{12}:[a-zA-Z0-9_.-]{1,256}$

    • approverIAM(必填):

      • 描述:(必填)提供 AWS 经过身份验证且能够批准或拒绝操作的委托人列表。最大审批者数量为 10。

      • 类型:StringList

      • 允许的模式:^[a-zA-Z0-9_+=,.@\\-\/]{1,128}$|^arn:(aws|aws-cn|aws-us-gov|aws-iso(-[a-z])?):(sts|iam)::[0-9]{12}:[a-zA-Z0-9_+=,.@\\-\/]{1,256}$

    • MinimumRequiredApprovals (可选):

      • 描述:(可选)恢复自动化所需的最低批准次数。默认值:1。

      • 类型:整数

      • 默认:1

    • DeleteResourcesOnFailure (可选):

      • 描述:(可选)是否终止克隆的 Amazon EC2 实例以及自动化AMI是否失败。

      • 类型:Boolean

      • 允许的值:[true, false]

      • 默认值:true

    • 致谢(必填):

      • 描述:(必填)请阅读本自动化运行手册所执行操作的完整详细信息,如果您确认这些步骤,请写上 “是的,我理解并同意”。

      • 类型:String

      • 允许的模式:^Yes, I understand and acknowledge$

    • AllowInstanceStoreInstances (可选):

      • 描述:(可选)如果您指定 yes,运行手册将在已附加实例存储卷的实例上运行。警告:当实例停止时,实例存储卷中的数据会丢失。此参数有助于避免意外丢失数据。

      • 类型:Boolean

      • 允许的值:[yes, no]

      • 默认值:no

  4. 选择执行。

  5. 自动化启动。

  6. 文档将执行以下步骤:

    • checkConcurrency:

      确保本运行手册仅针对当前 Amazon EC2 实例执行一次。

    • getTargetInstanceProperties:

      获取目标 Amazon EC2 实例的详细信息。

    • checkIfNitroInstanceTypeIsSupportedInAZ:

      确定在与目标 Amazon EC2 实例相同的可用区域中是否支持目标 Nitro 实例类型。

    • createTestImage:

      AMI从提供的实例创建测试。

    • launchTestInstanceInSameSubnet:

      AMI使用与目标亚马逊 EC2 实例相同的配置从测试中启动一个测试 Amazon EC2 实例。

    • approvalToStopTargetInstance:

      等待指定负责人批准后停止目标实例。

    • createBackupImage:

      AMI从提供的实例中创建一个用于备份。

    • launchInstanceInSameSubnet:

      AMI使用与源亚马逊 EC2 实例相同的配置,从备份中启动新的 Amazon EC2 实例。

    • checkAndInstallENADrivers:

      确定 Amazon EC2 实例上增强网络适配器 (ENA) 驱动程序的可用性以及安装(如果缺失)。

    • checkAndAddNVMEDrivers:

      确定克隆的 Amazon EC2 实例上的 NVMe 驱动程序的可用性以及安装(如果缺失)。

    • checkAndModifyFSTABEntries:

      确定是否在中使用设备名称/etc/fstab并将其替换为其 UUID(如果找到)。

    • setNitroInstanceTypeForClonedInstance:

      为克隆的亚马逊 EC2 实例设置提供的目标 Amazon EC2 实例类型。

    • approvalForCreatingImageAfterDriversInstallation:

      如果克隆的亚马逊 EC2 实例在 Nitro 平台上成功启动,则等待用户批准。

    • createImageAfterDriversInstallation:

      仅当新的亚马逊 EC2 实例在 Nitro 平台上成功启动时,才从新的 Amazon EC2 实例创建映像。

  7. 完成后,查看 “输出” 部分,了解详细的执行结果。

参考

AWS Systems Manager  自动化