AWSPremiumSupport-ResizeNitroInstance - AWS Systems Manager 自動化 Runbook 參考

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

AWSPremiumSupport-ResizeNitroInstance

Description (描述)

該手AWSPremiumSupport-ResizeNitroInstance冊提供了一個自動化的解決方案,用於調整在硝基系統上構建的亞馬遜彈性計算雲(Amazon EC2)實例的大小。

為了減少資料遺失和停機的潛在風險,runbook 會驗證下列項目:

  • 執行個體停止行為。

  • 如果執行個體是 Amazon EC2 自動擴展群組的一部分,且處於standby模式下。

  • 執行個體狀態和租用。

  • 您要變更的執行個體類型支援目前連接至執行個體的網路介面數目。

  • 目前和目標執行個體類型的處理器架構和虛擬化類型都相同。

  • 如果實例正在運行,則它正在通過所有狀態檢查。

  • 您要變更的執行個體類型可在相同的可用區域中使用。

如果 Amazon EC2 在變更執行個體類型後未通過狀態檢查,則執行手冊會自動回復為先前的執行個體類型。

根據預設,如果執行中且已連接執行個體儲存磁碟區,則此 runbook 不會變更執行個體類型。如果執行個體是AWS CloudFormation堆疊的一部分,runbook 也不會變更執行個體類型。如果您想要變更其中一個行為,請yesAllowInstanceStoreInstancesAllowCloudFormationInstances參數指定。

runbook 提供兩種不同的方法來指定您要變更為的執行個體類型:

  • 對於以單一執行個體為目標的簡單自動化,請使用TargetInstanceTypeFromParameter參數指定要變更為的執行個體類型。

  • 若要大規模執行自動化以變更多個例證的例證類型,請使用TargetInstanceTypeFromTagValue參數指定例證類型。如需有關大規模執行自動化的資訊,請參閱大規模執行自動化

如果您沒有為任一參數指定值,則自動化會失敗。

重要

存取 AWSPremiumSupport-* Runbook 需要企業或商業支援訂閱。如需詳細資訊,請參閱比較AWS Support方案

考量

  • 我們建議您在使用此 runbook 之前備份您的執行個體。

  • 如需變更執行個體類型相容性的詳細資訊,請參閱變更執行個體類型的相容性

  • 如果自動化失敗並回復為原始執行個體類型,請參閱疑難排解變更執行個體類型

  • 變更執行個體類型需要 runbook 停止執行個體。當執行個體停止時,儲存在記憶體或執行個體儲存磁碟區上的任何資料都會遺失。此外,會釋放任何自動指派的公用 IPv4 位址。如需停止執行個體時會發生什麼情況的詳細資訊,請參閱停止並啟動執行個體

  • 透過使用SkipInstancesWithTagKey參數,您可以略過套用特定 Amazon EC2 標籤金鑰的執行個體。

運行此自動化(控制台)

文件類型

 自動化

擁有者

Amazon

平台

Linux、Windows

參數

  • AutomationAssumeRole

    類型:字串

    說明:(選用) 允許系統管理員自動化代表您執行動作的 AWS Identity and Access Management (IAM) 角色的 Amazon 資源名稱 (ARN)。如果未指定角色,系統管理員自動化會使用啟動此 runbook 的使用者的權限。

  • 確認

    類型:字串

    描述:(必填)輸入yes以確認您的實例當前正在運行時將停止。

  • AllowInstanceStoreInstances

    類型:字串

    有效值:否 | 是

    預設:否

    描述:(選擇性) 如果您指定yes,則允許 runbook 在已連接執行個體儲存磁碟區的執行個體上執行。

  • AllowCloudFormationInstances

    類型:字串

    有效值:否 | 是

    預設:否

    描述:(選擇性) 如果您指定yes,runbook 會在屬於AWS CloudFormation堆疊一部分的執行個體上執行。

  • DryRun

    類型:字串

    有效值:否 | 是

    預設:否

    描述:(選擇性) 如果您指定yes,runbook 會驗證調整大小的需求,而不變更執行個體類型。

  • InstanceId

    類型:字串

    說明:(必填) 您要變更其類型之 Amazon EC2 執行個體的 ID。

  • SkipInstancesWithTagKey

    類型:字串

    說明:(選擇性) 如果您指定的標記鍵已套用至執行個體,則自動化會略過目標執行個體。

  • SleepTime

    類型:字串

    預設:3

    描述:(選擇性) 完成後,此 Runbook 應該睡眠的秒數。

  • TagInstance

    類型:字串

    說明:(選擇性) 使用下列格式,使用您選擇的索引鍵和值來標記執行個體:鍵 =ChangingType,值 = 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參數中指定的資源標籤金鑰加上標籤。如果找到標籤金鑰套用至執行個體,則步驟會失敗,且自動化結束。

  2. aws:assertAwsResourceProperty:確認目標 Amazon EC2 執行個體的狀態為runningpendingstopped、或stopping。否則,自動化結束。

  3. aws:executeAwsApi:從亞馬遜 EC2 執行個體收集屬性。

  4. aws:executeAwsApi:收集有關目前 Amazon EC2 執行個體類型的詳細資訊。

  5. aws:branch:檢查參數中指定的目前執行個體類型和執行個體類TargetInstanceTypeFromParameter型是否相同。如果是這樣,自動化結束。

  6. aws:assertAwsResourceProperty:確保執行個體在 Nitro 系統上執行。

  7. aws:branch:確保 Amazon EC2 執行個體根磁碟區類型為亞馬遜彈性區塊存放區 (亞馬遜 EBS) 磁碟區。

  8. aws:assertAwsResourceProperty:確認執行個體關閉行為是stop與否terminate

  9. aws:branch:確保 Amazon EC2 執行個體不是競價型執行個體。

  10. aws:branch:確保 Amazon EC2 執行個體租用為預設租用,而非專用主機或專用執行個體。

  11. aws:executeScript:確認此 runbook 只有一個針對當前實例 ID 的自動化操作。如果另一個自動化操作已在針對同一個執行個體進行中,則自動化會傳回錯誤並結束。

  12. aws:branch:根據 Amazon EC2 執行個體的狀態分支自動化。

    1. 如果是stoppedstopping,則自動化會執行,aws:waitForAwsResourceProperty直到 Amazon EC2 執行個體完全停止為止。

    2. 如果是runningpending,則自動化會執行,aws:waitForAwsResourceProperty直到 Amazon EC2 執行個體通過狀態檢查為止。

  13. aws:assertAwsResourceProperty:透過呼叫 DescribeAutoScalingInstances API 操作,確認 Amazon EC2 執行個體不屬於自動擴展群組的一部分。如果執行個體是自動擴展群組的一部分,請確保 Amazon EC2 執行個體處於standby模式。

  14. aws:branch:根據您是否希望自動化檢查 Amazon EC2 執行個體是否屬於AWS CloudFormation堆疊來分支自動化:

    1. aws:executeScript透過呼叫 DescribeStackResources API 作業,確保 Amazon EC2 執行個體不屬於AWS CloudFormation堆疊的一部分。

  15. aws:executeAwsApi:傳回具有相同處理器架構類型、虛擬化類型且支援目前連接至目標執行個體之網路介面數目的執行個體類型清單。

  16. aws:executeAwsApi:從參數中指定的標籤索引鍵取得目標執行個體類型TargetInstanceTypeFromTagValue值。

  17. aws:executeScript:確認目前執行個體和目標執行個體類型相容。確保目標執行個體類型在相同的子網路中可用。驗證啟動 runbook 的主體具有變更執行個體類型的權限,並在執行個體執行時停止和啟動執行個體。

  18. aws:branch:根據DryRun參數值是否設定為來分支自動化yes。如果yes,自動化結束。

  19. aws:branch:檢查原始執行個體和目標例證類型是否相同。如果它們是相同的,自動化結束。

  20. aws:executeAwsApi:取得目前執行個體狀態。

  21. aws:changeInstanceState:停止亞馬遜 EC2 實例。

  22. aws:changeInstanceState:如果執行個體停留在stopping狀態中,則強制停止執行個體。

  23. aws:executeAwsApi:將執行個體類型變更為目標執行個體類型。

  24. aws:sleep: 為了達到最終一致性,變更執行個體類型後等待 3 秒。

  25. aws:branch:根據先前的執行個體狀態分支自動化。如果是running,則會啟動執行個體。

    1. aws:changeInstanceState:如果 Amazon EC2 執行個體在變更執行個體類型之前已執行,請啟動該執行個體。

    2. aws:waitForAwsResourceProperty:等待 Amazon EC2 執行個體通過狀態檢查。如果執行個體未通過狀態檢查,執行個體就會變回其原始執行個體類型。

      1. aws:changeInstanceState:先停止 Amazon EC2 執行個體,再將其變更為原始執行個體類型。

      2. aws:changeInstanceState:強制 Amazon EC2 執行個體停止,然後再將其變更為原始執行個體類型,以防卡在停止狀態。

      3. aws:executeAwsApi:將 Amazon EC2 執行個體變更為其原始類型。

      4. aws:sleep: 為了達到最終一致性,變更執行個體類型後等待 3 秒。

      5. aws:changeInstanceState:如果 Amazon EC2 執行個體在變更執行個體類型之前已執行,請啟動該執行個體。

      6. aws:waitForAwsResourceProperty:等待 Amazon EC2 執行個體通過狀態檢查。

  26. aws:sleep:在結束手冊之前等待。