암호화된 스냅샷에서 새 Amazon EBS 볼륨을 생성했는데 존재하지 않는 이유는 무엇입니까?

최종 업데이트 날짜: 2021년 2월 10일

AWS Command Line Interface(AWS CLI) create-volume을 사용하여 암호화된 스냅샷에서 Amazon Elastic Block Store(Amazon EBS) 볼륨을 생성했습니다. 명령은 완료되었고 볼륨 ID를 반환합니다. 그런데 볼륨을 인스턴스에 연결하려고 하면 볼륨을 찾을 수가 없습니다. 암호화된 스냅샷에서 생성한 새 EBS 볼륨이 존재하지 않는 이유는 무엇입니까?

간략한 설명

스냅샷에서 Amazon EBS 볼륨을 생성하면 두 가지 작업이 실행됩니다.

  1. 우선, Amazon EBS가 볼륨 생성을 시작합니다. 이렇게 하면 볼륨 ID가 반환되고, 볼륨 상태를 생성 중으로 설정하게 됩니다(API/AWS CLI 출력에서 반환된 대로). 이는 CreateVolume API가 올바르며 등록되었다는 뜻입니다.
  2. 다음으로, 비동기 호출이 시작되어 생성 중인 볼륨을 암호화 및 복호화하는 데 쓰인 KMS 키의 유효성을 검사합니다.

KMS 유효성 검사가 성공하면 볼륨 상태가 ‘이용 가능함’으로 설정되며, EBS 볼륨에 액세스할 수 있게 됩니다. 다만 지정된 KMS 키 ID, 별칭 또는 ARN이 잘못된 경우에는 작업이 완료된 것으로 표시되어도 결국은 실패하며 오류를 반환하지 않습니다.

참고: CreateVolume의 KMS 유효성 검사는 비동기식입니다. 자세한 내용은 create-volumeEBS 리소스 암호화를 참조하세요.

이 문제는 EBS 볼륨을 연결하거나 이 볼륨에 액세스하려 할 때만 눈치챌 수도 있습니다. 그러면 CreateVolume API가 볼륨 ID를 반환하는데도 볼륨이 존재하지 않는 것으로 나옵니다. 또한 AWS CloudTrail 로그를 확인하면 아무런 오류도 표시되지 않습니다.

문제 예시

이 예시에서는 KMS 키에 잘못된 별칭을 사용한 CreateVolume API를 나타내었습니다. CreateVolume API가 성공하여 볼륨 ID를 반환한 다음, 볼륨 상태를 생성 중으로 설정합니다. KMS 키 별칭이 잘못되었기 때문에 비동기식 인증은 실패합니다. 이 때문에 전체 작업이 실패하게 됩니다. AWS CloudTrail 로그에서 볼륨 생성 이벤트를 확인하면 아무 오류도 없습니다. CreateVolume 작업은 성공했기 때문입니다.

$ aws ec2 create-volume --volume-type gp2 --availability-zone eu-west-1c --encrypted --kms-key-id hana --snapshot-id snap-0a27fe340500641d9 
{
    "AvailabilityZone": "eu-west-1c", 
    "MultiAttachEnabled": false, 
    "Tags": [], 
    "Encrypted": true, 
    "VolumeType": "gp2", 
    "VolumeId": "vol-043fe27d0ccf74b36", 
    "State": "creating", 
    "KmsKeyId": "hana", 
    "SnapshotId": "snap-0a27fe340500641d9", 
    "Iops": 100, 
    "CreateTime": "2020-10-06T18:03:09.000Z", 
    "Size": 8
}

AWS CloudTrail 로그

responseElements": {
        "requestId": "8677d3cd-ad1d-4866-95f5-375d92a35813",
        "volumeId": "vol-043fe27d0ccf74b36",
        "size": "8",
        "snapshotId": "snap-0a27fe340500641d9",
        "zone": "eu-west-1c",
        "status": "creating",
        "createTime": 1602007389000,
        "volumeType": "gp2",
        "iops": 100,
        "encrypted": true,
        "masterEncryptionKeyId": "hana",
        "tagSet": {},
        "multiAttachEnabled": false
    },
    "requestID": "8677d3cd-ad1d-4866-95f5-375d92a35813",
    "eventID": "bd4216df-ba39-425e-b272-936212ae6699",
    "eventType": "AwsApiCall",
    "recipientAccountId": "864258534754"
}

describe-volume-status를 실행하면 볼륨이 존재하지 않는 것으로 나옵니다.

$ aws ec2 describe-volume-status --volume-ids vol-043fe27d0ccf74b36
An error occurred (InvalidVolume.NotFound) when calling the DescribeVolumeStatus operation: 
The volume 'vol-043fe27d0ccf74b36' does not exist.

해결 방법

참고: AWS CLI 명령을 실행할 때 오류가 발생하는 경우 최신 버전의 AWS CLI를 사용하고 있는지 확인하세요.

describe-volume-status API 사용

describe-volume-status API를 사용하여 EBS 볼륨이 존재하는지 확인합니다.

CloudWatch CreateVolume 이벤트 구독

공용 CloudWatch CreateVolume 이벤트를 구독하면 볼륨 생성 실패에 관한 더 자세한 정보를 알아볼 수 있습니다. 사용자가 받아볼 수 있는 알림 예시는 다음과 같습니다. 이것은 CreateVolume CloudWatch 이벤트를 알려줍니다. 이 알림을 통해 이벤트에 관한 더 자세한 인사이트를 얻을 수 있으며, CreateVolume 결과가 잘못된 keyId로 인해 실패했다는 것을 확인할 수 있습니다.

AWS Notification Message
CreateVolume <no-reply@sns.amazonaws.com>
{
"version":"0","id":"192e695f-2387-1cf0-fb1c-1cb32f047212",
"detail-type":"EBS Volume Notification","source":"aws.ec2",
"account":"12345678","time":"2020-10-06T18:03:10Z",
"region":"eu-west-1",
"resources":["arn:aws:ec2:eu-west-1:864258534754:volume/vol-043fe27d0ccf74b36"],
"detail":
{"result":"failed","cause":"Invalid keyId hana","event":"createVolume",
"request-id":"8677d3cd-ad1d-4866-95f5-375d92a35813"}
}
참고: 암호화된 스냅샷에서 EBS 볼륨을 생성하는 경우, 이외에 다음과 같은 이유로도 생성에 실패할 수 있습니다.

  • 볼륨을 생성하는 AWS Identity and Access Management(IAM) 사용자/역할에 권한이 부족하여 스냅샷을 암호화하는 데 사용되는 KMS 키에 액세스하지 못했습니다.
  • 스냅샷을 암호화하는 데 쓰인 KMS 키가 비활성화, 삭제되었거나 해당 리전에 없습니다.