¿Por qué no existe el nuevo volumen de Amazon EBS que he creado a partir de una instantánea cifrada?

4 minutos de lectura
0

He usado el comando create-volume de la Interfaz de la línea de comandos de AWS (AWS CLI) para crear un volumen de Amazon Elastic Block Store (Amazon EBS) a partir de una instantánea cifrada. El comando se completa correctamente y devuelve un ID de volumen. Cuando intento asociar el volumen a una instancia, no lo encuentro.

Breve descripción

Al crear un volumen de Amazon EBS a partir de una instantánea, se ejecutan dos operaciones:

  1. Amazon EBS inicia la creación del volumen. Esto devuelve un ID de volumen y establece el estado En creación para el volumen, como aparece en la salida de la API o la AWS CLI. Esto significa que la API createVolume es válida y se ha registrado correctamente.
  2. Se inicia una llamada asíncrona para validar la clave del AWS Key Management Service (AWS KMS) que se utiliza para cifrar y descifrar el volumen que ha creado.

Si la validación de AWS KMS se realiza correctamente, el estado del volumen se establece como disponible y se puede acceder al volumen de EBS. Si el ID, el alias o el ARN de la clave de AWS KMS especificados no son válidos, la acción aparece como completada. Sin embargo, la creación del volumen finalmente falla y no devuelve ningún error.

Nota: La validación de AWS KMS para createVolume es asíncrona. Para obtener más información, consulte create-volume y Cifrar recursos de EBS.

Es posible que observe el problema cuando asocie el volumen de EBS o acceda a él. Aunque la API createVolume devuelve un ID de volumen, el volumen de EBS no existe y los registros de AWS CloudTrail no muestran ningún error.

Ejemplo de problema

En este ejemplo, la API createVolume en uso aparece con un alias no válido para la clave de AWS KMS. La API createVolume funciona correctamente y devuelve un ID de volumen; a continuación, establece el estado En creación para el volumen. Como el alias de la clave de AWS KMS no es válido, se produce un error en la autenticación asíncrona y esto hace que falle toda la operación. Al comprobar los registros de AWS CloudTrail para ver el evento de creación de volúmenes, no se encuentra ningún error porque la operación createVolume se ha realizado correctamente.

$ 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
}

Registros de 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"
}

Al ejecutar describe-volume-status, descubre que el volumen no 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.

Solución

Nota: Si se muestran errores al ejecutar comandos de AWS CLI, compruebe si está utilizando la versión más reciente de AWS CLI.

Uso de la API describe-volume-status

Para comprobar si existe el volumen de EBS, utilice la API describe-volume-status.

Suscripción a los eventos createVolume de CloudWatch

Suscríbase a los eventos públicos createVolume de CloudWatch para obtener más información sobre los errores en la creación de volúmenes. En este ejemplo, la notificación muestra el evento createVolume de CloudWatch. La notificación muestra que el resultado de createVolume falla debido a un valor no válido de keyId.

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"}
}

Nota: Si crea un volumen de EBS a partir de una instantánea cifrada, es posible que la creación de la instantánea también falle por los siguientes motivos:

  • El usuario o rol de AWS Identity and Access Management (IAM) que crea el volumen no tiene permisos suficientes. El usuario o rol de IAM debe tener permisos para acceder a la clave de AWS KMS que se usa para cifrar la instantánea.
  • La clave de AWS KMS que se usa para cifrar la instantánea está desactivada, eliminada o no se encuentra en la región de AWS.

Información relacionada

How do I optimize the performance of my Amazon EBS volumes?

¿Por qué no encuentro en los registros de eventos de CloudTrail el nombre de usuario que creó un volumen de EBS?

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 7 meses