EC2 콘솔에서 경보를 생성할 때 "이 인스턴스를 복구합니다(Recover this instance)" 옵션이 비활성화되는 이유는 무엇입니까?

최종 업데이트 날짜: 2018년 12월 12일

Amazon Elastic Compute Cloud(Amazon EC2) 콘솔에서 Amazon CloudWatch 경보를 생성하려고 합니다. 기본 하드웨어 장애로 인해 EC2 인스턴스가 손상되면 복구한 다음 경보 트리거 시 알림을 전송하려고 합니다. 그러나 [경보 생성(Create Alarm)] 페이지에서 “다음 작업 수행(Take the action)” 아래 “이 인스턴스를 복구합니다(Recover this instance)” 옵션이 회색 처리(비활성화)됩니다. 경보 알림 옵션도 비활성화됩니다. 이 옵션은 어떻게 다시 켭니까?

간략한 설명

EC2 인스턴스가 인스턴스 스토어 볼륨을 사용한다고 CloudWatch가 판단하는 경우에 이 인스턴스를 복구합니다(Recover this instance) 옵션이 비활성화됩니다. 인스턴스 스토어 볼륨에 대한 블록 디바이스 매핑으로 시작된 인스턴스를 포함하여 인스턴스 스토어 볼륨을 사용하는 EC2 인스턴스에 대해서는 복구 작업이 지원되지 않습니다. CloudWatch는 각 EC2 인스턴스에 연결된 메타데이터를 읽어 인스턴스 스토어 볼륨을 사용하지 않는지 확인한 후에야 복구 작업을 활성화합니다.

참고: 복구 작업은 특정 인스턴스 유형에서만 지원합니다. 지원되는 인스턴스 유형을 시작했는지 확인합니다. 자세한 내용은 인스턴스 복구를 참조하세요. EC2 복구 경보 작업은 StatusCheckFailed_System 지표에 대해서만 유효합니다.

해결 방법

참고: AWS 명령줄 인터페이스(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)에 대한 블록 디바이스 매핑을 검토합니다. “블록 디바이스(Block Devices)” 필드에 “=ephemeral#”이 포함된 블록 디바이스 인스턴스 스토어 볼륨이 있는지 확인합니다. 여기서 “#”은 0~23의 정수입니다.

인스턴스 유형이 인스턴스 스토어 볼륨을 공식적으로 지원하지 않는 경우에도 블록 디바이스 매핑이 발생할 수 있습니다. 이 작업은 다음 중 하나를 사용하여 EC2 인스턴스(Windows 또는 Linux)를 시작할 때 발생할 수 있습니다.

  • AWS CLI
  • SDK
  • AWS CloudFormation과 같은 서비스 

Amazon EC2 콘솔을 사용하여 인스턴스 스토어 볼륨을 지원하지 않는 인스턴스 유형을 시작하면 Amazon EC2에서 수정된 블록 디바이스 매핑을 무시합니다.

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” 디바이스에 인스턴스 스토어 볼륨이 매핑된 경우, run-instances 명령을 사용하여 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",
    "속성": {
     "ImageId" : "ami-11112222",
     "InstanceType" : "t2.medium",
     "SubnetId" : "subnet-11112222",
     "KeyName" : "my_key",
   "BlockDeviceMappings" : [
     {
       "DeviceName":"/dev/sdb",
       "NoDevice": {}
     },
     {
       "DeviceName":"/dev/sdc",
       "NoDevice": {}
     }
  ]
   }
  }
 }
}
  • SDK로 EC2 인스턴스를 시작한 경우, 관련 SDK 설명서에서 인스턴스 스토어 볼륨에 대한 디바이스의 매핑을 재정의하는 방법을 확인합니다.

이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요합니까?