跳至內容

如何使用 Systems Manager 維護時段排程啟動和停止 EC2 執行個體?

2 分的閱讀內容
0

我想使用 AWS Systems Manager 的維護時段功能,排程啟動或停止我的 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體。

簡短說明

若要排程啟動或停止您的執行個體,請將 AWS-StartEC2Instance 或 AWS-StopEC2Instance 執行手冊註冊至維護時段。您必須具備執行該執行手冊所需的權限。

**注意:**使用 AWS Systems Manager 的功能 Automation 執行執行手冊時,您的執行個體不必是受管執行個體。

若要在停止執行個體後立即重新啟動,請在同一個維護時段設定停止和啟動任務。若要讓執行個體在啟動前維持停止狀態一段預定時間,請將各任務設定在不同的維護時段。

解決方法

使用具備執行手冊所需權限的 IAM 角色

若要排程維護時段來執行啟動或停止動作,您必須使用具備執行該執行手冊所需權限的 AWS Identity and Access Management (IAM) 角色。IAM 角色只需要具備您註冊至維護時段的 Systems Manager 執行手冊的權限。例如,如果您選擇註冊 AWS-StartEC2Instance,而不註冊 AWS-StopEC2Instance,則 IAM 角色只需要 ec2:StartInstances 權限。

如果您的 IAM 角色不具備所需權限,請建立 IAM 角色。建立角色時,在 Service or use case (服務或使用案例),選取 Systems Manager (Systems Manager),或使用現有的 Systems Manager 角色。然後,將以下權限政策新增至角色:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ssm:StartAutomationExecution",
        "ec2:DescribeInstanceStatus"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "ec2:StartInstances",
        "ec2:StopInstances"
      ],
      "Resource": "arn:aws:ec2:example_region:example_account_number:instance/example_instance_ID"
    }
  ]
}

**注意:**將 example_region 替換為您的 AWS 區域。將 example_account_number 替換為您的 AWS 帳戶號碼。將 example_instance_ID 替換為您的執行個體 ID。您可以新增多個 ARN,並以逗號分隔。以下範例將兩個 ARN 指定為資源:

"Resource": "arn:aws:ec2:example_region:example_account_number:instance/example_instance_ID_1", "arn:aws:ec2:example_region:example_account_number:instance/example_instance_ID_2"

**重要:**針對 ec2:StartInstances 和 ec2:StopInstances,最佳實務是新增您要提供存取權之執行個體的資源 ARN。如需更多資訊,請參閱政策語法。如果您使用 AWS Key Management Service 金鑰加密執行個體中的磁碟區,請為角色新增該金鑰的權限。如需更多資訊,請參閱啟動連接加密磁碟區的 Amazon EC2 執行個體時,為什麼會出現「client error on launch」錯誤?

建立維護時段

如果您沒有維護時段,請建立維護時段。在維護時段中,依 Task Priority (任務優先順序) 欄位排列任務,並將 0 設為最高優先順序。如果您已有維護時段,請繼續進行註冊 Automation 任務。

若要向維護時段註冊目標,請選取 Choose instances manually (手動選擇執行個體) 或 Choose a resource group (選擇資源群組) 選項作為目標選項。若要在未註冊為目標的受管執行個體上執行維護時段,請選取 Allow unregistered targets (允許未註冊的目標)。請勿選取 Specify instance tags (指定執行個體標籤) 作為目標選項。

如需更多資訊,請參閱使用主控台將目標指派給維護時段。

註冊 Automation 任務

完成以下步驟:

  1. 開啟 Systems Manager console (Systems Manager 主控台)。
  2. 在導覽窗格中,選擇 Maintenance Windows (維護時段)。
  3. 在維護時段清單中,選擇目標維護時段。
  4. 選擇 Actions (動作),然後選擇 Register Automation task (註冊 Automation 任務)。
  5. (選用) 在 Maintenance window task details (維護時段任務詳細資訊) 中輸入名稱和描述。
  6. 在 Automation document (Automation 文件),選擇 AWS-StartEC2Instance 或 AWS-StopEC2Instance。
  7. 在 Document version (文件版本),選擇 Default version at runtime (執行時期的預設版本)。
  8. 系統預設將 Task priority (任務優先順序) 設定為 1。如果您向同一個維護時段註冊多個任務,請為任務指定不同的優先順序層級,以建立執行順序。
  9. 在 Targets (目標),如果您已為維護時段註冊目標執行個體,請選擇 Selecting registered target groups (選取已註冊的目標群組)。如果您尚未為維護時段註冊目標執行個體,請選擇 Selecting unregistered targets (選取未註冊的目標)。然後,手動選取您的執行個體,或指定資源群組以識別您要執行 Automation 文件的執行個體。
    **注意:**Systems Manager 僅針對其管理的執行個體支援目標標籤。
  10. 在 Rate control (速率控制),指定 Concurrency (並行) 和 Error threshold (錯誤閾值)。
  11. 在 IAM service role (IAM 服務角色),從下拉式清單中選取 Systems Manager 的服務角色。如果您尚未建立 Systems Manager 的服務角色,請建立服務角色。
    **注意:**請勿使用 AWSServiceRoleForAmazonSSM 角色。
  12. 在 Input parameters (輸入參數),指定以下參數:
    **InstanceId:**輸入 {{RESOURCE_ID}} 虛擬參數,以指定多個資源為目標。
    **AutomationAssumeRole:**輸入具備 ec2:StartInstances 或 ec2:StopInstances 權限之 IAM 角色的完整角色 Amazon Resource Name (ARN)。例如,arn:aws:iam::123456789101:role/SSM_StartStopEC2Role。
  13. 選擇 Register Automation task (註冊 Automation 任務)。

**重要:**若要註冊 Automation 文件以排程停止和啟動動作,請針對第二份文件重複上述步驟。

相關資訊

AWS Systems Manager Maintenance Windows

Amazon EC2 的動作、資源和條件索引鍵

為什麼 Systems Manager 未將我的 Amazon EC2 執行個體顯示為受管執行個體?

AWS 官方已更新 8 個月前