

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

# `AWSPremiumSupport-ResizeNitroInstance`
<a name="automation-aws-resizenitroinstance"></a>

 **描述** 

`AWSPremiumSupport-ResizeNitroInstance` 运行手册提供了一种自动化的解决方案，用于调整基于 Nitro 系统构建的 Amazon Elastic Compute Cloud (Amazon EC2) 实例的大小。

为了降低数据丢失和停机的潜在风险，运行手册对以下事项进行验证：
+ 实例停止行为。
+ 实例是否是 Amazon EC2 Auto Scaling 组的一部分且处于 `standby` 模式。
+ 实例状态和租赁。
+ 您要更改成的实例类型支持当前附加到您实例的网络接口的数量。
+ 当前实例类型和目标实例类型的处理器架构和虚拟化类型相同。
+ 如果实例正在运行，则表明它正在通过所有状态检查。
+ 您要更改的实例类型在相同可用区中是可用的。

如果 Amazon EC2 在更改实例类型后未通过状态检查，运行手册将自动回退到以前的实例类型。

默认情况下，如果实例正在运行以及已附加实例存储卷，则此运行手册不会更改实例类型。如果实例是 AWS CloudFormation 堆栈的一部分，运行手册也不会更改实例类型。如果要更改这些行为中的任意一个，请为 `AllowInstanceStoreInstances` 和 `AllowCloudFormationInstances` 参数指定 `yes`。

运行手册提供了两种不同的方法来指定要更改为的实例类型：
+ 对于针对单个实例的简单自动化，请使用 `TargetInstanceTypeFromParameter` 参数指定要更改为的实例类型。
+ 要大规模运行自动化以更改多个实例的实例类型，请使用 `TargetInstanceTypeFromTagValue` 参数指定实例类型。有关大规模运行自动化的信息，请参阅[大规模运行自动化](https://docs.aws.amazon.com/systems-manager/latest/userguide/automation-working-targets-and-rate-controls.html)。

如果您没有为任一参数指定一个值，自动化将失败。

**重要**  
访问`AWSPremiumSupport-*`运行手册需要订阅 Business \+ Support、Enterprise Support 或统一运营订阅。有关更多信息，请参阅[比较 AWS 支持 计划](https://aws.amazon.com/premiumsupport/plans/)。

 **注意事项** 
+ 我们建议您在使用此运行手册之前先备份您的实例。
+ 有关更改实例类型的兼容性的信息，请参阅[更改实例类型的兼容性](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/resize-limitations.html)。
+ 如果自动化失败并回退到初始实例类型，请参阅[更改实例类型疑难解答](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/troubleshoot-change-instance-type.html)。
+ 更改实例类型需要运行手册来停止您的实例。停止实例后，存储在内存或实例存储卷上的数据将丢失。此外，任何自动分配的公用 IPv4 地址都会被释放。有关停止实例时会发生什么的更多信息，请参阅[停止和启动您的实例](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Stop_Start.html)。
+ 使用 `SkipInstancesWithTagKey` 参数，您可以跳过应用了特定 Amazon EC2 标签键的实例。

 [运行此自动化（控制台）](https://console.aws.amazon.com/systems-manager/automation/execute/AWSPremiumSupport-ResizeNitroInstance) 

**文档类型**

自动化

**所有者**

Amazon

**平台**

Linux、Windows

**参数**
+ AutomationAssumeRole

  类型：字符串

  描述：（可选）允许 Systems Manager Automation 代表您执行操作 AWS Identity and Access Management (IAM) 角色的 Amazon 资源名称（ARN）。如果未指定角色，Systems Manager Automation 将使用启动此运行手册的用户的权限。
+ 确认

  类型：字符串

  描述：（必需）输入**yes**以确认如果您的实例当前正在运行，则该实例将停止。
+ AllowInstanceStoreInstances

  类型：字符串

  有效值：否 \| 是

  默认值：no

  描述：（可选）如果您指定 `yes`，您将允许运行手册在已附加实例存储卷的实例上运行。
+ AllowCloudFormationInstances

  类型：字符串

  有效值：否 \| 是

  默认值：no

  描述：（可选）如果您指定`yes`，则运行手册将在属于 CloudFormation 堆栈的实例上运行。
+ DryRun

  类型：字符串

  有效值：否 \| 是

  默认值：no

  描述：（可选）如果您指定 `yes`，运行手册将验证大小调整要求，而不会更改实例类型。
+ InstanceId

  类型：字符串

  描述：（必填）要更改其类型的 Amazon EC2 实例的 ID。
+ SkipInstancesWithTagKey

  类型：字符串

  描述：（可选）如果您指定的标签键应用于目标实例，自动化将跳过该实例。
+ SleepTime

  类型：字符串

  原定设置值：3

  描述：（可选）此运行手册在完成后应处于休眠状态的秒数。
+ TagInstance

  类型：字符串

  描述：（可选）使用您选择的密钥和值标记实例，格式如下：{{Key=ChangingType,Value=True}}。此选项允许您跟踪此运行手册所针对的实例。标签键和值区分大小写。
+ TargetInstanceTypeFromParameter

  类型：字符串

  描述：（可选）要将您的实例更改为的实例类型。如果您要使用 `TargetInstanceTypeFromTagValue` 参数中提供的标签键的值，请将此参数留空。
+ TargetInstanceTypeFromTagValue

  类型：字符串

  描述：（可选）应用于目标实例的标签键，其值包含您要更改为的实例类型。如果您为 `TargetInstanceTypeFromParameter` 参数指定值，那么它将替换您为此参数指定的任何值。

**所需的 IAM 权限**

`AutomationAssumeRole` 参数需要执行以下操作才能成功使用运行手册。
+  `autoscaling:DescribeAutoScalingInstances` 
+  `cloudformation:DescribeStackResources` 
+  `ssm:GetAutomationExecution` 
+  `ssm:DescribeAutomationExecutions` 
+  `ec2:DescribeInstanceAttribute` 
+  `ec2:DescribeInstances` 
+  `ec2:DescribeInstanceStatus` 
+  `ec2:DescribeInstanceTypeOfferings` 
+  `ec2:DescribeInstanceTypes` 
+  `ec2:DescribeTags` 
+  `ec2:ModifyInstanceAttribute` 
+  `ec2:StartInstances` 
+  `ec2:StopInstances` 

 **文档步骤** 

1. `aws:assertAwsResourceProperty`：确保 Amazon EC2 实例未使用 `SkipInstancesWithTagKey` 参数中指定的资源标签键进行标记。如果发现标签键应用于该实例，该步骤将失败，自动化将结束。

1. `aws:assertAwsResourceProperty`：确认目标 Amazon EC2 实例的状态为 `running`、`pending`、`stopped` 或 `stopping`。否则，自动化将结束。

1. `aws:executeAwsApi`：从 Amazon EC2 实例收集属性。

1. `aws:executeAwsApi`：收集有关当前 Amazon EC2 实例类型的详细信息。

1. `aws:branch`：检查当前实例类型和 `TargetInstanceTypeFromParameter` 参数中指定的实例类型是否相同。如果相同，自动化将结束。

1. `aws:assertAwsResourceProperty`：确保实例在 Nitro 系统上运行。

1. `aws:branch`：确保 Amazon EC2 实例根卷类型为 Amazon Elastic Block Store (Amazon EBS) 卷。

1. `aws:assertAwsResourceProperty`：确认实例关闭行为是 `stop` 且不是 `terminate`。

1. `aws:branch`: 确保 Amazon EC2 实例不是竞价型实例。

1. `aws:branch`：确保 Amazon EC2 实例的租赁是默认的，而不是专属主机或专用实例。

1. `aws:executeScript`：确认此运行手册中只有一个针对当前实例 ID 的自动化。如果针对同一实例的另一个自动化已经在进行，则它会返回错误并结束。

1. `aws:branch`：根据 Amazon EC2 实例的状态对自动化进行分支。

   1. 如果为 `stopped` 或 `stopping`，则自动化会运行 `aws:waitForAwsResourceProperty`，直到 Amazon EC2 实例完全停止。

   1. 如果为 `running` 或 `pending`，则自动化会运行 `aws:waitForAwsResourceProperty`，直到 Amazon EC2 实例通过状态检查。

1. `aws:assertAwsResourceProperty`：通过调用 `DescribeAutoScalingInstances` API 操作，确认 Amazon EC2 实例不是自动扩缩组的一部分。如果实例是自动扩缩组的一部分，确保 Amazon EC2 实例处于 `standby` 模式。

1. `aws:branch`：根据您是否希望自动化检查 Amazon EC2 实例是否属于 CloudFormation 堆栈来分支自动化：

   1. `aws:executeScript`通过调用 `DescribeStackResources` API 操作确保 Amazon EC2 实例不属于 CloudFormation 堆栈。

1. `aws:executeAwsApi`：返回具有相同处理器架构类型、虚拟化类型且支持当前附加到目标实例的网络接口数量的实例类型列表。

1. `aws:executeAwsApi`：从 `TargetInstanceTypeFromTagValue` 参数中指定的标签键获取目标实例类型值。

1. `aws:executeScript`：确认当前实例类型和目标实例类型兼容。确保目标实例类型在同一个子网中可用。验证已启动运行手册的主体是否拥有更改实例类型的权限，以及是否拥有当实例正在运行时停止和启动该实例的权限。

1. `aws:branch`：根据 `DryRun` 参数值是否设置为 `yes`，对自动化进行分支。如果是 `yes`，自动化将结束。

1. `aws:branch`：检查原始和目标实例类型是否相同。如果它们相同，自动化将结束。

1. `aws:executeAwsApi`：获取当前实例状态。

1. `aws:changeInstanceState`：停止 Amazon EC2 实例。

1. `aws:changeInstanceState`：如果实例卡在了 `stopping` 停止状态，则强制其停止。

1. `aws:executeAwsApi`：将实例类型更改为目标实例类型。

1. `aws:sleep`：更改实例类型后等待 3 秒钟以确保最终一致性。

1. `aws:branch`：根据前实例的状态对自动化进行分支。如果是 `running`，则实例已启动。

   1. `aws:changeInstanceState`：如果 Amazon EC2 实例在更改实例类型之前正在运行，则启动该实例。

   1. `aws:waitForAwsResourceProperty`：等待 Amazon EC2 实例通过状态检查。如果实例未通过状态检查，实例将变回其原始的实例类型。

      1. `aws:changeInstanceState`：停止 Amazon EC2 实例，然后将其更改为原始实例类型。

      1. `aws:changeInstanceState`：强制 Amazon EC2 实例停止，然后再将其更改为原始实例类型，以防它卡在停止状态。

      1. `aws:executeAwsApi`：将 Amazon EC2 实例更改为其原始类型。

      1. `aws:sleep`：更改实例类型后等待 3 秒钟以确保最终一致性。

      1. `aws:changeInstanceState`：如果 Amazon EC2 实例在更改实例类型之前正在运行，则启动该实例。

      1. `aws:waitForAwsResourceProperty`：等待 Amazon EC2 实例通过状态检查。

1. `aws:sleep`：等待，然后结束运行手册。