為什麼在 EC2 主控台中建立警示時停用「復原此執行個體」選項?

2 分的閱讀內容
0

我正在嘗試在 Amazon Elastic Compute Cloud (Amazon EC2) 主控台中建立一個 Amazon CloudWatch 警報。如果 EC2 執行個體因基礎硬體故障而受損,我想要復原它,然後在警示觸發時傳送通知。不過,在「建立警示」頁面上,「採取行動」下的「復原此執行個體」選項會變成灰色 (停用)。警報通知選項也會停用。如何重新開啟這些選項?

簡短描述

如果 CloudWatch 判斷 EC2 執行個體使用執行個體儲存體磁碟區,則會停用 Recover this instance (復原此執行個體) 選項。使用執行個體儲存體磁碟區的 EC2 執行個體不支援復原動作,包括使用執行個體儲存體磁碟區的區塊型裝置映射啟動的執行個體。CloudWatch 會讀取與每個 EC2 執行個體相關聯的中繼資料,以在啟用復原動作之前確認其不使用執行個體儲存體磁碟區。

**注意:**只有特定執行個體類型才支援「復原」動作。請確定您已啟動支援的執行個體類型。如需詳細資訊,請參閱復原執行個體。EC2 復原警示動作僅對 StatusCheckFailed_System 指標有效。

解決方法

**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請確定您使用的是最新的 AWS CLI 版本

繼續之前,請參閱建立停止、終止、重新開機或復原執行個體的警示。請確定您符合建立 CloudWatch 警示的所有先決條件。

在 EC2 Linux 執行個體中尋找臨時執行個體儲存體磁碟區

1.     連線至您的 Linux 執行個體

2.     使用下列命令從執行個體擷取中繼資料

curl http://169.254.169.254/latest/meta-data/block-device-mapping/

3.     使用輸出來識別映射至執行個體的執行個體儲存磁碟區 (其名稱以「ephemeral」開頭)。例如,此輸出中有兩個執行個體儲存磁碟區 (「ephemeral0」和「ephemeral2」):

[ec2-user ~]$ curl http://169.254.169.254/latest/meta-data/block-device-mapping/
ami
ephemeral0
ephemeral2
root

在 EC2 Windows 執行個體中尋找臨時執行個體儲存體磁碟區

使用瀏覽器:

1.     連線至您的 Windows 執行個體

2.     開啟瀏覽器並連線至:

http://169.254.169.254/latest/meta-data/block-device-mapping/

3.     使用傳回的資訊來識別映射至執行個體的執行個體儲存磁碟區 (名稱以「ephemeral」開頭)。

使用 Windows PowerShell:

1.     連線到您的 PowerShell中的 Windows 執行個體。

2.     執行下列命令:

PS C:\> Invoke-RestMethod -uri http://169.254.169.254/latest/meta-data/block-device-mapping/

3.     使用輸出來識別映射至執行個體的執行個體儲存磁碟區 (其名稱以「ephemeral」開頭)。例如,此輸出中有一個執行個體儲存磁碟區 (「ephemeral0」):

ami
ephemeral0
root
swap

如需詳細資訊,請參閱檢視執行個體儲存體磁碟區的執行個體區塊型裝置映射

在 EC2 執行個體的 AMI 中尋找臨時執行個體儲存體磁碟區

檢閱 EC2 執行個體之 Amazon Machine Image (AMI)區塊型裝置映射。檢查「區塊型裝置」欄位包含「=ephemeral#」的區塊型裝置執行個體儲存磁碟區,其中「#」是介於 0-23 的整數。

即使執行個體類型不正式支援執行個體儲存體磁碟區,也可能會發生區塊型裝置映射。當您使用下列其中一項來啟動 EC2 執行個體 (Windows 或 Linux) 時,可能會發生此動作:

  • AWS CLI
  • 一個 SDK
  • 諸如 AWS CloudFormation 之類的服務

當您使用 Amazon EC2 主控台啟動不支援執行個體儲存體磁碟區的執行個體類型時,Amazon EC2 會忽略修改過的區塊型裝置對映。

您可以](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/block-device-mapping-concepts.html#view-ami-bdm)使用 Amazon EC2 主控台或 AWS CLI 在 AMI 的區塊型裝置映射中[列舉 EBS 磁碟區。

例如,下列 describe-images 指令會傳回 AMI 的 BlockDeviceMapping

aws ec2 describe-images --image-ids ami-xxxxxxxx

執行個體儲存體磁碟區的範例輸出,其「VirtualName」以「ephemeral」開頭:

aws ec2 describe-images --image-ids ami-11112222

"BlockDeviceMappings": [
   {
      "DeviceName": "/dev/xvda",
      "Ebs": {
         "DeleteOnTermination": true,
         "SnapshotId": "snap-        ",
         "VolumeSize": 8,
         "VolumeType": "gp2",
         "Encrypted": false
      }
   },
   {
      "DeviceName": "/dev/sdb",
      "VirtualName": "ep0hemeral0"
   },
   {
      "DeviceName": "/dev/sdc",
      "VirtualName": "ephemeral2"
   }
],

移除或覆寫 AMI 中執行個體儲存磁碟區的任何參照

確認 EC2 執行個體使用執行個體儲存體磁碟區後,您必須移除或覆寫 AMI 中執行個體儲存體磁碟區的任何參考。然後,您必須重新啟動執行個體,因為無法從現有 EC2 執行個體新增或移除執行個體儲存體磁碟區。

使用下列其中一種方法移除或覆寫執行個體儲存磁碟區的參照:

  • 從 AMI 移除執行個體儲存磁碟區的參照。然後,重新啟動執行個體。
  • Amazon EC2 主控台啟動 EC2 執行個體,以覆寫不支援執行個體磁碟區存放區的執行個體類型的 AMI。
  • 從 AWS CLI 啟動 EC2 執行個體,然後手動覆寫 AMI 中參考執行個體儲存體磁碟區的每個裝置。例如,如果您的裝置「/dev/sdb」和「/dev/sdc」映射至執行個體儲存體磁碟區,請使用執行個體命令啟動 EC2 執行個體:
aws ec2 run-instances --image-id ami-11112222 --subnet-id subnet-11112222 --instance-type t2.medium
 --key-name my_key --associate-public-ip-address --block-device-mappings
 '[{"DeviceName": "/dev/sdb","NoDevice": ""},{"DeviceName": "/dev/sdc","NoDevice": ""}]'
  • 對於由 CloudFormation 啟動的 EC2 執行個體,請建立 CloudFormation 範本以覆寫任何裝置與執行個體儲存體磁碟區的映射。例如:
{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Resources": {
   "I4EY8I": {
    "Type": "AWS::EC2::Instance",
    "Properties": {
     "ImageId" : "ami-11112222",
     "InstanceType" : "t2.medium",
     "SubnetId" : "subnet-11112222",
     "KeyName" : "my_key",
   "BlockDeviceMappings" : [
     {
       "DeviceName":"/dev/sdb",
       "NoDevice": {}
     },
     {
       "DeviceName":"/dev/sdc",
       "NoDevice": {}
     }
  ]
   }
  }
 }
}
  • 對於由 SDK 啟動的 EC2 執行個體,請查看相關的 SDK 檔案,瞭解如何將裝置映射至執行個體儲存體磁碟區覆寫。

相關資訊

使用 Amazon CloudWatch 警示

AWS 官方
AWS 官方已更新 5 年前