암호화된 스냅샷에서 생성한 새 Amazon EBS 볼륨이 존재하지 않는 이유가 무엇인가요?

3분 분량
0

AWS Command Line Interface(AWS CLI)의 create-volume 명령을 사용하여 암호화된 스냅샷에서 Amazon Elastic Block Store(Amazon EBS) 볼륨을 생성했습니다. 명령이 성공적으로 완료되고 볼륨 ID를 반환합니다. 볼륨을 인스턴스에 연결하려고 하는 경우에 볼륨을 찾을 수 없습니다.

간략한 설명

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

  1. Amazon EBS가 볼륨 생성을 시작합니다. 그러면 볼륨 ID가 반환되고 볼륨 상태가 API 또는 AWS CLI 출력에 반환된 대로 생성 중으로 설정됩니다. 이것은 createVolume API가 유효하고 성공적으로 등록되었음을 의미합니다.
  2. 비동기 호출이 시작되어 생성한 볼륨을 암호화하고 해독하는 데 사용되는 AWS Key Management Service(AWS KMS) 키를 검증합니다.

AWS KMS 검증에 성공하면 볼륨 상태가 사용 가능으로 설정되고 EBS 볼륨에 액세스할 수 있게 됩니다. 지정된 AWS KMS 키 ID, 별칭 또는 ARN이 유효하지 않은 경우 작업이 완료된 것으로 표시됩니다. 그러나 볼륨 생성이 결국 실패하고 오류를 반환하지 않게 됩니다.

참고: createVolume에 대한 AWS KMS 검증은 비동기식입니다. 자세한 내용은 create-volumeAmazon EBS 리소스 암호화를 참조하세요.

EBS 볼륨을 연결하거나 액세스할 때 문제가 발생할 수 있습니다. createVolume API가 볼륨 ID를 반환하지만, EBS 볼륨이 존재하지 않으며 AWS CloudTrail 로그에 오류가 표시되지 않습니다.

문제 예시

이 예는 createVolume API가 AWS KMS 키에 대해 유효하지 않은 별칭과 함께 사용 중인 것을 보여줍니다. createVolume API가 성공하여 볼륨 ID를 반환한 다음 볼륨 상태를 생성 중으로 설정합니다. AWS 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",z
        "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-043fe27d0ccf74b36An error occurred (InvalidVolume.NotFound) when calling the DescribeVolumeStatus operation:
The volume 'vol-043fe27d0ccf74b36' does not exist.

해결 방법

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

describe-volume-status API 사용

EBS 볼륨이 존재하는지 확인하려면 describe-volume-status API를 사용하세요.

CloudWatch createVolume 이벤트 구독

볼륨 생성 실패에 대한 자세한 내용은 퍼블릭 CloudWatch createVolume 이벤트를 구독하세요. 이 예제에서는 알림에 createVolume CloudWatch 이벤트를 보여줍니다. 이 알림은 keyId가 유효하지 않아 createVolume 결과가 실패했음을 보여줍니다.

AWS Notification MessageCreateVolume <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) 사용자 또는 역할에 충분한 권한이 없습니다. IAM 사용자 또는 역할에는 스냅샷을 암호화하는 데 사용되는 AWS KMS 키에 액세스할 수 있는 권한이 있어야 합니다.
  • 스냅샷을 암호화하는 데 사용되는 AWS KMS 키가 꺼져 있거나, 삭제되었거나, AWS 리전에 없습니다.

관련 정보

Amazon EBS 볼륨 성능을 최적화하려면 어떻게 해야 하나요?

CloudTrail 이벤트 로그를 검색할 때 EBS 볼륨을 생성한 사용자 이름을 찾을 수 없는 이유는 무엇인가요?

AWS 공식
AWS 공식업데이트됨 7달 전