Por que o novo volume do Amazon EBS que eu crio a partir de um instantâneo criptografado não existe?

4 minuto de leitura
0

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:

  1. 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.
  2. 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

Como otimizar o desempenho dos meus volumes do Amazon EBS?

Por que não consigo encontrar o nome de usuário que criou um volume do EBS ao pesquisar logs de eventos do CloudTrail?

AWS OFICIAL
AWS OFICIALAtualizada há 8 meses