演練:在無法觸達的執行個體上執行 EC2Rescue 工具 - AWS Systems Manager

演練:在無法觸達的執行個體上執行 EC2Rescue 工具

EC2Rescue 可協助您對 Linux 和 Windows Server Amazon Elastic Compute Cloud (Amazon EC2) 執行個體的問題進行故障診斷。您可以手動執行工具,請參閱 Using EC2Rescue for Linux Server (使用適用於 Linux 伺服器的 EC2Rescue)Using EC2Rescue for Windows Server (使用適用於 Windows Server 的 EC2Rescue)。或者,您可以使用 Systems Manager Automation 和 AWSSupport-ExecuteEC2Rescue Runbook 自動執行工具。自動化是 AWS Systems Manager 的功能。AWSSupport-ExecuteEC2Rescue Runbook 旨在執行一組 Systems Manager 動作、AWS CloudFormation 動作和 Lambda 函數,以將通常必須使用 EC2Rescue 的步驟自動化。

您可以使用 AWSSupport-ExecuteEC2Rescue Runbook 針對不同類型的作業系統 (OS) 問題疑難排解並可能修復。請參閱下列主題以取得完整的清單:

Windows:請參閱將 EC2Rescue for Windows Server 與命令列搭配使用中的救援動作

LinuxmacOS:某些適用於 Linux 模組的 EC2Rescue 會偵測並嘗試修復問題。如需詳細資訊,請參閱 GitHub 上針對各模組的 aws-ec2rescue-linux 文件。

運作方式

使用 Automation 和 AWSSupport-ExecuteEC2Rescue Runbook 對執行個體進行故障診斷的運作方式如下:

  • 您要指定無法連線的執行個體 ID 並執行 Runbook。

  • 系統會建立暫時 VPC,接著執行一系列 Lambda 函數以設定 VPC。

  • 系統會在與原始執行個體相同的可用區域中為您的暫時 VPC 識別出子網路。

  • 系統會啟動暫時且啟用 SSM 的協助程式執行個體。

  • 系統會停止您的原始執行個體,並建立備份。接著系統會將原始根磁碟區連接至協助程式執行個體。

  • 系統會使用 Run Command 在協助程式執行個體上執行 EC2Rescue。EC2Rescue 會在已連接的原始根磁碟區上識別並嘗試修正問題。完成後,EC2Rescue 會重新將根磁碟區連接回原始執行個體。

  • 系統會重新啟動您的原始執行個體,並終止暫時執行個體。系統也會終止在自動化開始時建立的暫時 VPC 和 Lambda 函數。

開始之前

執行以下自動化之前,請先執行以下項目:

  • 複製無法連線之執行個體的執行個體 ID。您會在程序中指定此 ID。

  • 或者,收集與無法連線之執行個體位於相同可用區域中的子網路 ID。EC2Rescue 執行個體會在此子網路中建立。如果您不指定子網路,則自動化會在您的 AWS 帳戶 中建立新的暫時 VPC。確認您的 AWS 帳戶 至少有一個可用的 VPC。根據預設,您可以在一個區域中建立五個 VPC。如果您已經在區域中建立五個 VPC,則自動化會失敗且不會變更您的執行個體。如需 VPC 中 IPv6 的詳細資訊,請參閱《Amazon VPC 使用者指南》中的 VPC 和子網路

  • 或者,您可以建立和指定自動化的 AWS Identity and Access Management (IAM) 角色。如果您不指定此角色,則自動化會在執行自動化的使用者內容中執行。如需建立自動化之角色的詳細資訊,請參閱 使用 IAM 服務角色執行自動化

授予 AWSSupport-EC2Rescue 在執行個體上執行動作的許可

EC2Rescue 需要許可才能在自動化執行期間於您的執行個體一系列動作。這些動作會呼叫 AWS Lambda、IAM、Amazon EC2 服務,以安全的方式嘗試修復執行個體的問題。如果您在 AWS 帳戶 帳戶及/或 VPC 中有管理員層級的許可,您或許可以不必設定許可而執行自動化,如本節所述。如果您沒有管理員層級的許可,則您或管理員必須使用以下其中一個選項來設定許可。

使用 IAM 政策授予許可

您可以將以下 IAM 政策做為內嵌政策連接至您的 IAM 使用者帳戶、群組或角色;或者,您可以建立新的 IAM 受管政策並將其連接至您的使用者帳戶、群組或角色。如需新增內嵌政策至使用者帳戶、群組或角色的詳細資訊,請參閱使用內嵌政策。如需建立新受管政策的詳細資訊,請參閱使用受管政策

注意

如果您建立新的 IAM 受管政策,您也必須為其連接 AmazonSSMAutomationRole 受管政策,以使您的執行個體能夠與 Systems Manager API 通訊。

AWSSupport-EC2Rescue 的 IAM 政策

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "lambda:InvokeFunction", "lambda:DeleteFunction", "lambda:GetFunction" ], "Resource": "arn:aws:lambda:*:aws-account-id:function:AWSSupport-EC2Rescue-*", "Effect": "Allow" }, { "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::awssupport-ssm.*/*.template", "arn:aws:s3:::awssupport-ssm.*/*.zip" ], "Effect": "Allow" }, { "Action": [ "iam:CreateRole", "iam:CreateInstanceProfile", "iam:GetRole", "iam:GetInstanceProfile", "iam:PutRolePolicy", "iam:DetachRolePolicy", "iam:AttachRolePolicy", "iam:PassRole", "iam:AddRoleToInstanceProfile", "iam:RemoveRoleFromInstanceProfile", "iam:DeleteRole", "iam:DeleteRolePolicy", "iam:DeleteInstanceProfile" ], "Resource": [ "arn:aws:iam::aws-account-id:role/AWSSupport-EC2Rescue-*", "arn:aws:iam::aws-account-id:instance-profile/AWSSupport-EC2Rescue-*" ], "Effect": "Allow" }, { "Action": [ "lambda:CreateFunction", "ec2:CreateVpc", "ec2:ModifyVpcAttribute", "ec2:DeleteVpc", "ec2:CreateInternetGateway", "ec2:AttachInternetGateway", "ec2:DetachInternetGateway", "ec2:DeleteInternetGateway", "ec2:CreateSubnet", "ec2:DeleteSubnet", "ec2:CreateRoute", "ec2:DeleteRoute", "ec2:CreateRouteTable", "ec2:AssociateRouteTable", "ec2:DisassociateRouteTable", "ec2:DeleteRouteTable", "ec2:CreateVpcEndpoint", "ec2:DeleteVpcEndpoints", "ec2:ModifyVpcEndpoint", "ec2:Describe*" ], "Resource": "*", "Effect": "Allow" } ] }

使用 AWS CloudFormation 範本授予許可

AWS CloudFormation 會使用預先設定的範本自動化建立 IAM 角色和政策的程序。藉由以下程序,使用 AWS CloudFormation 為 EC2Rescue 自動化建立所需的 IAM 角色和政策。

為 EC2Rescue 建立所需的 IAM 角色和政策

  1. 下載 AWSSupport-EC2RescueRole.zip 並將 AWSSupport-EC2RescueRole.json 檔案解壓縮至本機電腦上的目錄。

  2. 如果您的 AWS 帳戶 帳戶是特殊分割區,請編輯範本以將 ARN 值變更為您分割區的服務端點和 ARN 值。

    例如,對於中國區域,將 arn:aws 的所有案例變更為 arn:aws-cn

  3. 請登入 AWS Management Console,開啟位於 https://console.aws.amazon.com/cloudformation 的 AWS CloudFormation 主控台。

  4. 選擇 Create stack (建立堆疊)With new resources (standard) (使用新資源 (標準))

  5. Create stack (建立堆疊) 頁面上,對於 Prerequisite - Prepare template (先決條件 - 準備範本),選擇 Template is ready (範本已準備就緒)

  6. 對於 Specify template (指定範本),選擇 Upload a template file (上傳範本檔案)

  7. 選擇 Choose file (選擇檔案),然後瀏覽並從您解壓縮檔案的目錄中選取 AWSSupport-EC2RescueRole.json 檔案。

  8. 選擇 Next (下一步)

  9. Specify stack details (指定堆疊詳細資訊) 頁面上,對於 Stack name (堆疊名稱) 欄位,輸入識別此堆疊的名稱,然後選擇 Next (下一步)

  10. (選用) 在 Tags (標籤) 區域中將一個或多個標籤索引鍵名稱/值對套用到堆疊。

    標籤是您指派給資源的選用性中繼資料。標籤可讓您以不同的方式 (例如用途、擁有者或環境) 將資源分類。例如,您可能想要標記堆疊來識別其執行的任務類型、相關的目標類型或其他資源,以及其執行所在的環境。

  11. 選擇 Next (下一步)

  12. Review (檢閱) 頁面上,檢閱堆疊詳細資訊,然後向下捲動,選擇 I acknowledge that AWS CloudFormation might create IAM resources (我知道 AWS CloudFormation 可能會建立 IAM 資源)。

  13. 選擇 Create Stack (建立堆疊)

    AWS CloudFormation 會顯示 CREATE_IN_PROGRESS 狀態數分鐘。堆疊建立之後,狀態會變更為 CREATE_COMPLETE (CREATE_COMPLETE)。您也可以選擇重新整理圖示來檢查建立程序的狀態。

  14. Stacks (堆疊) 清單中,選擇您剛建立堆疊的選項按鈕,然後選擇 Outputs (輸出) 索引標籤。

  15. 請記下 Value (值)。此為 AssumeRole 的 ARN。當您在下一個程序執行自動化中執行自動化時,請指定此 ARN。

執行自動化

重要

以下自動化工作流程會停止無法連線的執行個體。停止執行個體可能會導致已連接執行個體存放磁碟區上的資料遺失 (若有)。停止執行個體也可能會導致公有 IP 變更 (若無關聯的彈性 IP)。

執行 AWSSupport-ExecuteEC2Rescue 自動化。

  1. 開啟位於 AWS Systems Managerhttps://console.aws.amazon.com/systems-manager/ 的 主控台。https://console.aws.amazon.com/systems-manager/

  2. 在導覽窗格中選擇 Automation (自動化)。

    -或-

    如果 AWS Systems Manager 首頁先開啟,選擇選單圖示 ( ) 以開啟導覽窗格,然後選擇 Automation (自動化)。

  3. 選擇 Execute automation (執行自動化)

  4. Automation document (自動化文件) 部分,從清單選擇 Owned by Amazon (由 Amazon 所有)

  5. 在 Runbook 清單中,選擇 AWSSupport-ExecuteEC2Rescue 卡片中的按鈕,然後選擇 Next (下一步)。

  6. Execute automation document (執行自動化文件) 頁面上,選擇 Simple execution (簡易執行)

  7. Document details (文件詳細資訊) 部分,確認 Document version (文件版本) 設為最高的預設版本。例如,$DEFAULT3 (default) (3 (預設))

  8. Input parameters (輸入參數) 區段中,指定以下參數:

    1. 針對 UnreachableInstanceId (UnreachableInstanceId),指定無法連線之執行個體的 ID。

    2. (選用) 針對 EC2RescueInstanceType (EC2RescueInstanceType),指定 EC2Rescue 執行個體的執行個體類型。預設執行個體類型為 t2.small

    3. 對於 AutomationAssumeRole,如果您使用本主題稍早所述的 AWS CloudFormation 程序來建立此自動化的角色,請選擇您在 AWS CloudFormation 主控台中建立之 AssumeRole 的 ARN。

    4. (選用) 針對 LogDestination,如果您在對解執行個體進行故障診斷時想要收集作業系統層級的日誌,請指定 S3 儲存貯體。日誌會自動上傳至指定的儲存貯體。

    5. 針對 SubnetId (SubnetId),在與無法連線之執行個體位於相同可用區域的現有 VPC 中指定子網路。根據預設,Systems Manager 會建立新的 VPC,但您也可以在現有 VPC 中指定子網路。

      注意

      如果您沒見到指定儲存貯體或子網路 ID 的選項,請確認您使用的是 Runbook 最新的 Default (預設) 版本。

  9. (選用) 在 Tags (標籤) 區域中,套用一個或多個標籤索引鍵名稱/值對以協助識別自動化,例如 Key=Purpose,Value=EC2Rescue

  10. 選擇 Execute (執行)

作為自動化的一部分,Runbook 會建立備份 AMI。其他所有由自動化建立的資源都會自動刪除,但此 AMI 會保留於您的帳戶。AMI 使用以下慣例命名:

備份 AMI:AWSSupport-EC2Rescue:UnreachableInstanceId

您可以搜尋自動化執行 ID 以在 Amazon EC2 主控台找到此 AMI。