Por que o novo volume do Amazon EBS que eu crio a partir de um instantâneo criptografado não existe?
Usei o comando create-volume da AWS Command Line Interface (AWS CLI) para criar um volume do Amazon Elastic Block Store (Amazon EBS) a partir de um instantâneo criptografado. O comando é concluído com êxito e retorna uma ID de volume. Quando tento anexar o volume a uma instância, não consigo encontrar o volume.
Breve descrição
Quando você cria um volume do Amazon EBS a partir de um instantâneo, duas operações são executadas:
- O Amazon EBS inicia a criação do volume. Isso retorna uma ID de volume e define o estado do volume como criando, conforme retornado na saída da API ou da AWS CLI. Isso significa que a API createVolume é válida e foi registrada com sucesso.
- Uma chamada assíncrona é iniciada para validar a chave do AWS Key Management Service (AWS KMS), que é usada para criptografar e descriptografar o volume que você cria.
Se a validação do AWS KMS for bem-sucedida, o estado do volume será definido como disponível e o volume do EBS ficará acessível. Se a ID da chave, o alias ou o ARN especificados do AWS KMS não forem válidos, a ação parecerá concluída. No entanto, a criação do volume eventualmente falha e não retorna nenhum erro.
Observação: a validação do AWS KMS para createVolume é assíncrona. Para obter mais informações, consulte create-volume e Como criptografar recursos do Amazon EBS.
Talvez você perceba o problema ao conectar ou acessar o volume do EBS. Embora a API createVolume retorne uma ID de volume, o volume do EBS não existe e os logs do AWS CloudTrail não mostram nenhum erro.
Exemplo de problema
Este exemplo mostra a API createVolume em uso com um alias inválido para a chave do AWS KMS. A API createVolume é bem-sucedida e retorna uma ID de volume e, em seguida, define o estado do volume como criando. Como o alias da chave do AWS KMS não é válido, a autenticação assíncrona falha. Isso faz com que toda a operação falhe. Quando você verifica os logs do AWS CloudTrail em busca do evento de criação de volume, nenhum erro é encontrado porque a operação createVolume foi bem-sucedida.
$ 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 }
Logs do 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" }
Ao executar describe-volume-status, você descobre que o volume não existe:
$ 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.
Resolução
Observação: se você receber erros ao executar comandos da AWS CLI, certifique-se de estar usando a versão mais recente da AWS CLI.
Usar a API describe-volume-status
Para verificar se o volume do EBS existe, use a API describe-volume-status.
Inscrever-se nos eventos createVolume do CloudWatch
Inscreva-se nos eventos públicos createVolume do CloudWatch para obter mais informações sobre falhas na criação de volumes. Neste exemplo, a notificação mostra o evento createVolume do CloudWatch. A notificação mostra que o resultado de createVolume falha devido a um keyId inválido.
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"} }
Observação: se você criar um volume do EBS a partir de um instantâneo criptografado, a criação do instantâneo também poderá falhar por estes motivos:
- O usuário ou o perfil do AWS Identity and Access Management (IAM) que cria o volume não tem permissões suficientes. O usuário ou o perfil do IAM deve ter permissões para acessar a chave do AWS KMS usada para criptografar o instantâneo.
- A chave do AWS KMS usada para criptografar o instantâneo está desativada, foi excluída ou não está na região da AWS.
Informações relacionadas
Conteúdo relevante
- AWS OFICIALAtualizada há um ano
- AWS OFICIALAtualizada há um ano
- AWS OFICIALAtualizada há um ano
- AWS OFICIALAtualizada há 9 meses