

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

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

 **Description** 

`AWSPremiumSupport-ResizeNitroInstance` Runbook 提供自動化解決方案，以調整以 Nitro 系統建置的 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體大小。

為了降低資料遺失和停機的潛在風險， Runbook 會驗證下列項目：
+ 執行個體停止行為。
+ 如果執行個體是 Amazon EC2 Auto Scaling 群組的一部分，且處於 `standby` 模式。
+ 執行個體狀態和租用。
+ 您想要變更的執行個體類型，可支援目前連接至執行個體的網路介面數量。
+ 目前和目標執行個體類型的處理器架構和虛擬化類型都相同。
+ 如果執行個體正在執行，表示它正在傳遞所有狀態檢查。
+ 您要變更為 的執行個體類型可在相同的可用區域中使用。

如果 Amazon EC2 在變更執行個體類型後未通過狀態檢查，則 Runbook 會自動轉返至先前的執行個體類型。

根據預設，如果執行個體正在執行且已連接執行個體存放區磁碟區，此 Runbook 不會變更執行個體類型。如果執行個體是 AWS CloudFormation 堆疊的一部分，則 Runbook 也不會變更執行個體類型。如果您想要變更其中一個行為，請`yes`為 `AllowInstanceStoreInstances`和 `AllowCloudFormationInstances` 參數指定 。

Runbook 提供兩種不同的方法來指定您要變更為的執行個體類型：
+ 對於以單一執行個體為目標的簡單自動化，請使用 `TargetInstanceTypeFromParameter` 參數指定您要變更為 的執行個體類型。
+ 若要大規模執行自動化以變更數個執行個體的執行個體類型，請使用 `TargetInstanceTypeFromTagValue` 參數指定執行個體類型。如需大規模執行自動化的資訊，請參閱[大規模執行自動化](https://docs.aws.amazon.com/systems-manager/latest/userguide/automation-working-targets-and-rate-controls.html)。

如果您未指定任一參數的值，則自動化會失敗。

**重要**  
存取 `AWSPremiumSupport-*` Runbook 需要 Business \+ Support、Enterprise Support 或 Unified Operations Subscription。如需詳細資訊，請參閱[比較 AWS 支援 計劃](https://aws.amazon.com/premiumsupport/plans/)。

 **考量** 
+ 建議您先備份執行個體，再使用此 Runbook。
+ 如需變更執行個體類型的相容性資訊，請參閱[變更執行個體類型的相容性](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/resize-limitations.html)。
+ 如果自動化失敗並回復為原始執行個體類型，請參閱[對變更執行個體類型進行故障診斷](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/troubleshoot-change-instance-type.html)。
+ 變更執行個體類型需要 Runbook 來停止您的執行個體。當執行個體停止時，儲存在記憶體或執行個體儲存體磁碟區中的任何資料都會遺失。此外，也會釋出任何自動指派的公有 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 代表您執行動作的 (IAM) 角色的 AWS Identity and Access Management Amazon Resource Name (ARN)。如果未指定角色，Systems Manager Automation 會使用啟動此 Runbook 之使用者的許可。
+ 確認

  類型：字串

  描述：（必要） 輸入 **yes** 以確認您的執行個體將在目前執行時停止。
+ AllowInstanceStoreInstances

  類型：字串

  有效值：否 \| 是

  預設：否

  描述：（選用） 如果您指定 `yes`，您可以允許 Runbook 在已連接執行個體存放磁碟區的執行個體上執行。
+ AllowCloudFormationInstances

  類型：字串

  有效值：否 \| 是

  預設：否

  描述：（選用） 如果您指定 `yes`，則 Runbook 會在屬於 CloudFormation 堆疊的執行個體上執行。
+ DryRun

  類型：字串

  有效值：否 \| 是

  預設：否

  描述：（選用） 如果您指定 `yes`， Runbook 會驗證調整大小需求，而不會變更執行個體類型。
+ InstanceId

  類型：字串

  描述：（必要） 您要變更其類型的 Amazon EC2 執行個體 ID。
+ SkipInstancesWithTagKey

  類型：字串

  描述：（選用） 如果您指定的標籤金鑰套用至執行個體，自動化會略過目標執行個體。
+ SleepTime

  類型：字串

  預設：3

  描述：（選用） 此 Runbook 在完成之後應休眠的秒數。
+ TagInstance

  類型：字串

  描述：（選用） 使用下列格式，使用您選擇的索引鍵和值標記執行個體：{{Key=ChangingType，Value=True}}。此選項可讓您追蹤此 Runbook 鎖定目標的執行個體。標籤鍵與值皆區分大小寫。
+ TargetInstanceTypeFromParameter

  類型：字串

  描述：（選用） 您要變更執行個體的執行個體類型。如果您想要使用 參數中提供的標籤索引鍵值，請將此`TargetInstanceTypeFromTagValue`參數保留空白。
+ TargetInstanceTypeFromTagValue

  類型：字串

  描述：（選用） 套用至目標執行個體的標籤索引鍵，其值包含您要變更的執行個體類型。如果您指定 `TargetInstanceTypeFromParameter` 參數的值，則會覆寫您為此參數指定的任何值。

**必要的 IAM 許可**

`AutomationAssumeRole` 參數需要下列動作才能成功使用 Runbook。
+  `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`、`stopped`、 `pending`或 `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 執行個體不是 Spot 執行個體。

1. `aws:branch`：確保 Amazon EC2 執行個體租用是預設的，而不是專用主機或專用執行個體。

1. `aws:executeScript`：確認只有一個以目前執行個體 ID 為目標的 Runbook 自動化。如果另一個自動化已在以相同執行個體為目標進行，自動化會傳回錯誤並結束。

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 執行個體不屬於 Auto Scaling 群組。如果執行個體是 Auto Scaling 群組的一部分， 會確保 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`：確認目前和目標執行個體類型相容。確保目標執行個體類型可在相同的子網路中使用。驗證啟動 Runbook 的主體是否具有變更執行個體類型的許可，並在執行個體正在執行時停止和啟動執行個體。

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`：在結束 Runbook 之前等待。