EC2 콘솔에서 알람을 생성할 때 “이 인스턴스 복구” 옵션이 비활성화되는 이유는 무엇인가요?

4분 분량
0

Amazon Elastic Compute Cloud(Amazon EC2) 콘솔에서 Amazon CloudWatch 알람을 생성하려고 합니다. 기본 하드웨어 장애로 인해 손상된 EC2 인스턴스를 복구한 다음 알람이 트리거되면 알림을 보내고 싶습니다. 하지만 알람 생성 페이지의 “조치 취하기” 아래의 “이 인스턴스 복구” 옵션은 회색으로 표시됩니다(비활성화). 알람 알림 옵션도 비활성화됩니다. 이 옵션을 다시 켜려면 어떻게 해야 하나요?

간략한 설명

CloudWatch에서 EC2 인스턴스가 인스턴스 스토어 볼륨을 사용한다고 판단하면 이 인스턴스 복구 옵션이 비활성화됩니다. 복구 작업은 인스턴스 스토어 볼륨의 블록 디바이스 매핑으로 시작된 인스턴스를 포함하여 인스턴스 스토어 볼륨을 사용하는 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는 수정된 블록 디바이스 매핑을 무시합니다.

Amazon EC2 콘솔 또는 AWS CLI를 사용하여 AMI의 블록 디바이스 매핑에서 EBS 볼륨을 열거할 수 있습니다.

예를 들어, 다음 describe-images 명령은 AMI에 대한 BlockDeviceMapping을 반환합니다.

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

“VirtualName”이 “임시”로 시작하는 인스턴스 스토어 볼륨의 예제 출력:

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-instance 명령을 사용하여 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년 전