Usar las API directas de EBS para acceder al contenido de una instantánea de EBS - Amazon Elastic Compute Cloud

Usar las API directas de EBS para acceder al contenido de una instantánea de EBS

Puede utilizar las API directas Amazon Elastic Block Store (Amazon EBS) para crear instantáneas de EBS, escribir datos directamente en las instantáneas, leer datos en las instantáneas e identificar las diferencias o cambios entre dos instantáneas. Si es un proveedor de software independiente (ISV) que ofrece servicios de copia de seguridad para Amazon EBS, las API directas de EBS permiten que realice un seguimiento de los cambios incrementales en los volúmenes de EBS a través de instantáneas de forma más eficiente y económica. Esto se puede hacer sin tener que crear nuevos volúmenes a partir de instantáneas y utilizar después instancias Amazon Elastic Compute Cloud (Amazon EC2) para comparar las diferencias.

Puede crear instantáneas incrementales directamente a partir de datos locales en volúmenes de EBS y en la nube para utilizarlos para una recuperación de desastres rápida. Con la capacidad de escribir y leer instantáneas, puede escribir los datos locales en una instantánea de EBS durante un desastre. A continuación, tras la recuperación, puede restaurarlos de nuevo a AWS o en las instalaciones a partir de la instantánea. Ya no es necesario crear y mantener mecanismos complejos para copiar datos desde y hacia Amazon EBS.

Esta guía del usuario proporciona información general sobre los elementos que componen las API directas de EBS y ejemplos de cómo usarlos de manera eficaz. Para obtener más información acerca de las acciones, los tipos de datos, los parámetros y los errores de las API, consulte la referencia de API directas de EBS. Para obtener más información acerca de las regiones de AWS, los puntos de enlace y Service Quotas de las API directas de EBS, consulte Puntos de enlace y cuotas de Amazon EBS en la Referencia general de AWS.

Comprender las API directas de EBS

A continuación, se indican los conceptos clave que debe conocer antes de empezar a trabajar con las API directas de EBS.

Pricing

El precio que se paga para usar las API directas de EBS depende de las solicitudes que se realicen. Para obtener más información, consulte PreciosAmazon EBS.

Snapshots

Las instantáneas son el mecanismo principal para realizar copias de seguridad de los datos de los volúmenes de EBS. Con API directas de EBS, también puede realizar copias de seguridad de los datos de los discos locales en instantáneas. Para ahorrar costos de almacenamiento, las instantáneas sucesivas son incrementales y solo contienen los datos del volumen modificados desde la instantánea anterior. Para obtener más información, consulte Instantáneas de Amazon EBS.

nota

Las instantáneas públicas no se admiten en las API directas de EBS.

Blocks

Un bloque es un fragmento de datos dentro de una instantánea. Cada instantánea puede contener miles de bloques. Todos los bloques de una instantánea tienen un tamaño fijo.

Índices de bloque

Un índice de bloque es la posición de desplazamiento de un bloque dentro de una instantánea y se utiliza para identificar el bloque. Multiplique el valor BlockIndex por el valor BlockSize (BlockIndex * BlockSize) para identificar el desplazamiento lógico de los datos en el volumen lógico.

Tokens de bloque

Un token de bloque es el hash de identificación de un bloque dentro de una instantánea y se utiliza para localizar los datos del bloque. Los tokens de bloque devueltos por las API directas de EBS son temporales. Cambian en la marca de tiempo de caducidad especificada para ellos o si ejecuta otra solicitud ListSnapshotBlocks o ListChangedBlocks para la misma instantánea.

Checksum

Una suma de comprobación es un dato de pequeño tamaño derivado de un bloque de datos con el fin de detectar errores que se introdujeron durante su transmisión o almacenamiento. Las API directas de EBS utilizan sumas de comprobación para validar la integridad de los datos. Cuando lee datos de una instantánea de EBS, el servicio proporciona sumas de comprobación SHA256 codificadas en Base64 para cada bloque de datos transmitido, que puede utilizar para la validación. Cuando escribe datos en una instantánea de EBS, debe proporcionar una suma de comprobación SHA256 codificada en Base64 para cada bloque de datos transmitido. El servicio valida los datos recibidos utilizando la suma de comprobación proporcionada. Para obtener más información, consulte Usar sumas de comprobación más adelante en esta guía.

Encryption

El cifrado protege los datos al convertirlos en código ilegible que solo pueden descifrar las personas que tienen acceso a la Clave de KMS utilizada para cifrarlos. Puede usar las API directas de EBS para leer y escribir instantáneas cifradas, pero hay algunas limitaciones. Para obtener más información, consulte Usar cifrado más adelante en esta guía.

Acciones de API

Las API directas de EBS constan de seis acciones. Hay tres acciones de lectura y tres acciones de escritura. Las acciones de lectura son ListSnapshotBlocks, ListChangedBlocks y GetSnapshotBlock. Las acciones de escritura son StartSnapshot, PutSnapshotBlock y CompleteSnapshot. Estas acciones se describen en las siguientes secciones.

Mostrar bloques de instantáneas

La acción ListListSnapshotBlocks devuelve los índices de bloque y los tokens de bloque de bloques de la instantánea especificada.

Mostrar bloques modificados

La acción ListChangedBlocks devuelve los índices de bloque y los tokens de bloque de los bloques que son distintos entre dos instantáneas especificadas del mismo tipo de volumen y parentesco de instantánea.

Obtener bloque de instantáneas

La acción GetSnapshotBlock devuelve los datos de un bloque para el ID de instantánea, el índice de bloque y el token de bloque especificados.

Iniciar instantánea

La acción StartSnapshot inicia una instantánea, bien como una instantánea progresiva de otra existente o como una nueva instantánea. La instantánea iniciada permanece en estado pendiente hasta que se completa con la acción CompleteSnapshot.

Colocar bloque de instantáneas

La acción PutSnapshotBlock agrega datos a una instantánea iniciada en forma de bloques individuales. Debe especificar una suma de comprobación de codificación Base64 SHA256 para el bloque de datos transmitido. El servicio convalida la suma de comprobación una vez completada la transmisión. La solicitud presenta error si la suma de comprobación calculada por servicio no coincide con lo que especificó.

Instantánea completa

La acción CompleteSnapshot completa una instantánea iniciada que está en estado pendiente. La instantánea se puede cambiar a estado completo.

Usar las API directas de EBS para leer instantáneas

En los siguientes pasos se describe cómo utilizar las API directas de EBS para leer instantáneas:

  1. Utilice la acción ListSnapshotBlocks para ver todos los índices de bloque y los tokens de bloque de los bloques de una instantánea. O utilice la acción ListChangedBlocks para ver solo los índices de bloque y los tokens de bloque de bloques que son diferentes entre dos instantáneas del mismo volumen y parentesco de instantánea. Estas acciones le ayudan a identificar los tokens de bloque y los índices de bloque de bloques para los que es posible que desee obtener datos.

  2. Utilice la acción GetSnapshotBlock y especifique el índice de bloque y el token de bloque del bloque para el que desea obtener datos.

Para obtener ejemplos de cómo ejecutar estas acciones, consulte las secciones Utilizar las API directas de EBS mediante la API o los AWS SDK y Utilizar las API directas de EBS mediante la línea de comandos más adelante en esta guía.

Usar las API directas de EBS para escribir instantáneas incrementales

En los siguientes pasos se describe cómo utilizar las API directas de EBS para escribir instantáneas incrementales:

  1. Utilice la acción StartSnapshot y especifique un ID de instantánea principal para iniciar una instantánea como instantánea incremental de una existente u omita el ID de instantánea principal para iniciar una nueva instantánea. Esta acción devuelve el nuevo ID de instantánea, que está en estado pendiente.

  2. Utilice la acción PutSnapshotBlock y especifique el ID de la instantánea pendiente para agregarle datos en forma de bloques individuales. Debe especificar una suma de comprobación de codificación Base64 SHA256 para el bloque de datos transmitido. El servicio calcula la suma de comprobación de los datos recibidos y la valida con la suma de comprobación especificada. La acción devuelve un error si las sumas de comprobación no coinciden.

  3. Cuando haya terminado de agregar datos a la instantánea pendiente, utilice la acción CompleteSnapshot para iniciar un flujo de trabajo asíncrono que selle la instantánea y la mueva a un estado completado.

Repita estos pasos para crear una nueva instantánea incremental utilizando la instantánea creada anteriormente como principal.

Por ejemplo, en el siguiente diagrama, la instantánea A es la primera nueva instantánea iniciada. La instantánea A se utiliza como instantánea principal para iniciar la instantánea B. La instantánea B se utiliza como instantánea principal para iniciar y crear la instantánea C. Las instantáneas A, B y C son instantáneas incrementales. La instantánea A se utiliza para crear el volumen 1 de EBS. La instantánea D se crea a partir del volumen 1 de EBS. La instantánea D es una instantánea incremental de A; no es una instantánea incremental de B o C.


          Las API directas de EBS utilizadas para crear instantáneas incrementales.

Para obtener ejemplos de cómo ejecutar estas acciones, consulte las secciones Utilizar las API directas de EBS mediante la API o los AWS SDK y Utilizar las API directas de EBS mediante la línea de comandos más adelante en esta guía.

Permisos para los usuarios de IAM

El usuario de AWS Identity and Access Management (IAM) debe tener las siguientes políticas para utilizar las API directas de EBS. Para obtener más información, consulte Cambio de los permisos de un usuario de IAM.

Tenga cuidado al asignar las siguientes políticas a los usuarios de IAM. Al asignar estas políticas, puede dar acceso a un usuario al que se deniegue el acceso al mismo recurso a través de las API de Amazon EC2, como las acciones CopySnapshot o CreateVolume.

La siguiente política permite que las API directas de EBS de lectura se utilicen en todas las instantáneas de una región de AWS específica. En la política, sustituya <Región> por la región de la instantánea.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ebs:ListSnapshotBlocks", "ebs:ListChangedBlocks", "ebs:GetSnapshotBlock" ], "Resource": "arn:aws:ec2:<Region>::snapshot/*" } ] }

La siguiente política permite utilizar las API directas de EBS de lectura en instantáneas con una etiqueta clave-valor específica. En la política, reemplace <Key> por el valor de clave de la etiqueta y <Value> por el valor de la etiqueta.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ebs:ListSnapshotBlocks", "ebs:ListChangedBlocks", "ebs:GetSnapshotBlock" ], "Resource": "arn:aws:ec2:*::snapshot/*", "Condition": { "StringEqualsIgnoreCase": { "aws:ResourceTag/<Key>": "<Value>" } } } ] }

La siguiente directiva permite que todas las API directas de EBS de lectura se utilicen en todas las instantáneas de la cuenta solo dentro de un intervalo de tiempo específico. Esta política autoriza el uso de las API directas de EBS basadas en la clave de condición global aws:CurrentTime. En la política, asegúrese de reemplazar el intervalo de fecha y hora mostrado por el intervalo de fecha y hora de la política.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ebs:ListSnapshotBlocks", "ebs:ListChangedBlocks", "ebs:GetSnapshotBlock" ], "Resource": "arn:aws:ec2:*::snapshot/*", "Condition": { "DateGreaterThan": { "aws:CurrentTime": "2018-05-29T00:00:00Z" }, "DateLessThan": { "aws:CurrentTime": "2020-05-29T23:59:59Z" } } } ] }

La siguiente política concede acceso para descifrar una instantánea cifrada mediante una Clave de KMS específica. Concede acceso con el fin de cifrar nuevas instantáneas mediante el ID de Clave de KMS predeterminado para las instantáneas de EBS. También proporciona la capacidad de determinar si el cifrado se habilita de forma predeterminada en la cuenta. En la política, reemplace <Region> con la región de la clave de KMS, <AccountId> con el ID de la cuenta de AWS de la clave de KMS y <KeyId> con el ID de la clave de KMS utilizada para cifrar la instantánea que desea leer con las API directas de EBS.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:GenerateDataKey", "kms:GenerateDataKeyWithoutPlaintext", "kms:ReEncrypt*", "kms:CreateGrant", "ec2:CreateTags", "kms:DescribeKey", "ec2:GetEbsDefaultKmsKeyId", "ec2:GetEbsEncryptionByDefault" ], "Resource": "arn:aws:kms:<Region>:<AccountId>:key/<KeyId>" } ] }

Para obtener más información, consulte Cambio de los permisos de un usuario de IAM en la Guía del usuario de IAM.

La siguiente política permite que las API directas de EBS de escritura se utilicen en todas las instantáneas de una región de AWS específica. En la política, sustituya <Región> por la región de la instantánea.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ebs:StartSnapshot", "ebs:PutSnapshotBlock", "ebs:CompleteSnapshot" ], "Resource": "arn:aws:ec2:<Region>::snapshot/*" } ] }

La siguiente política permite que las API directas de EBS de escritura se utilicen en instantáneas con una etiqueta clave-valor específica. En la política, reemplace <Key> por el valor de clave de la etiqueta y <Value> por el valor de la etiqueta.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ebs:StartSnapshot", "ebs:PutSnapshotBlock", "ebs:CompleteSnapshot" ], "Resource": "arn:aws:ec2:*::snapshot/*", "Condition": { "StringEqualsIgnoreCase": { "aws:ResourceTag/<Key>": "<Value>" } } } ] }

La siguiente política permite que se utilicen las API directas de EBS. También permite la acción StartSnapshot solo si se especifica un ID de instantánea principal. Por lo tanto, esta política bloquea la capacidad de iniciar nuevas instantáneas sin utilizar una instantánea principal.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ebs:*", "Resource": "*", "Condition": { "StringEquals": { "ebs:ParentSnapshot": "arn:aws:ec2:*::snapshot/*" } } } ] }

La siguiente política permite que se utilicen las API directas de EBS. También permite que solo se cree la clave de etiqueta de user para una nueva instantánea. Esta política también garantiza que el usuario tenga acceso para crear etiquetas. La acción StartSnapshot es la única acción que puede especificar etiquetas.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ebs:*", "Resource": "*", "Condition": { "ForAllValues:StringEquals": { "aws:TagKeys": "user" } } }, { "Effect": "Allow", "Action": "ec2:CreateTags", "Resource": "*" } ] }

La siguiente política permite que todas las API directas de EBS de escritura se utilicen en todas las instantáneas de la cuenta solo dentro de un intervalo de tiempo específico. Esta política autoriza el uso de las API directas de EBS basadas en la clave de condición global aws:CurrentTime. En la política, asegúrese de reemplazar el intervalo de fecha y hora mostrado por el intervalo de fecha y hora de la política.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ebs:StartSnapshot", "ebs:PutSnapshotBlock", "ebs:CompleteSnapshot" ], "Resource": "arn:aws:ec2:*::snapshot/*", "Condition": { "DateGreaterThan": { "aws:CurrentTime": "2018-05-29T00:00:00Z" }, "DateLessThan": { "aws:CurrentTime": "2020-05-29T23:59:59Z" } } } ] }

La siguiente política concede acceso para descifrar una instantánea cifrada mediante una Clave de KMS específica. Concede acceso con el fin de cifrar nuevas instantáneas mediante el ID de Clave de KMS predeterminado para las instantáneas de EBS. También proporciona la capacidad de determinar si el cifrado se habilita de forma predeterminada en la cuenta. En la política, reemplace <Region> con la región de la clave de KMS, <AccountId> con el ID de la cuenta de AWS de la clave de KMS y <KeyId> con el ID de la clave de KMS utilizada para cifrar la instantánea que desea leer con las API directas de EBS.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:GenerateDataKey", "kms:GenerateDataKeyWithoutPlaintext", "kms:ReEncrypt*", "kms:CreateGrant", "ec2:CreateTags", "kms:DescribeKey", "ec2:GetEbsDefaultKmsKeyId", "ec2:GetEbsEncryptionByDefault" ], "Resource": "arn:aws:kms:<Region>:<AccountId>:key/<KeyId>" } ] }

Para obtener más información, consulte Cambio de los permisos de un usuario de IAM en la Guía del usuario de IAM.

Usar cifrado

Si el cifrado de Amazon EBS está habilitado de forma predeterminada en su cuenta de AWS, no puede iniciar una nueva instantánea con una instantánea principal no cifrada. Primero debe cifrar la instantánea principal copiándola. Para obtener más información, consulte Copiar una instantánea de Amazon EBS y Cifrado de forma predeterminada.

Para iniciar una instantánea cifrada, especifique el nombre de recurso de Amazon (ARN) de una Clave de KMS o especifique una instantánea principal cifrada en la solicitud StartSnapshot. Si no se especifica ninguno de los dos y el cifrado de Amazon EBS está habilitado de forma predeterminada en la cuenta, se utiliza la Clave de KMS predeterminada para la cuenta. Si no se ha especificado ninguna clave de KMS predeterminada para la cuenta, entonces se utiliza la Clave administrada por AWS .

importante

De forma predeterminada, todas las entidades principales de la cuenta tienen acceso a la Clave administrada por AWS predeterminada y pueden usarla para operaciones de cifrado y descifrado de EBS. Para obtener más información, consulte Clave de KMS predeterminada para el cifrado de EBS.

Es posible que necesite permisos de IAM adicionales para usar las API directas de EBS con el cifrado. Para obtener más información, consulte la sección Permisos para los usuarios de IAM mencionada previamente en esta guía.

Usar la firma de Signature Version 4

Signature Version 4 es el proceso para agregar información de autenticación a las solicitudes de AWS enviadas por HTTP. Por seguridad, la mayoría de las solicitudes de AWS se firman con una clave de acceso, que se compone de un ID de clave de acceso y una clave de acceso secreta. Estas dos claves comúnmente se denominan credenciales de seguridad. Para obtener información acerca de cómo obtener credenciales para su cuenta, consulte Descripción y obtención de sus credenciales.

Si tiene la intención de crear manualmente solicitudes HTTP, debe aprender a firmarlas. Cuando se utiliza la AWS Command Line Interface (AWS CLI) o uno de los AWS SDK para realizar solicitudes a AWS, estas herramientas firman automáticamente las solicitudes por usted con la clave de acceso que especificó al configurar las herramientas. Si usa estas herramientas, no tiene que aprender a firmar las solicitudes personalmente.

Para obtener más información, consulte Firma de solicitudes de AWS con Signature Version 4 en la Referencia general de AWS.

Usar sumas de comprobación

La acción GetSnapshotBlock devuelve datos que están en un bloque de una instantánea y la acción PutSnapshotBlock agrega datos a un bloque en una instantánea. Los datos de bloque que se transmiten no se firman como parte del proceso de firma de Signature Version 4. Como resultado, las sumas de comprobación se utilizan para validar la integridad de los datos de la siguiente manera:

  • Cuando se utiliza la acción GetSnapshotBlock, la respuesta proporciona una suma de comprobación SHA256 codificada en Base64 para los datos de bloque mediante el encabezado x-amz-Checksum y el algoritmo de suma de comprobación mediante el encabezado x-amz-Checksum-Algorithm. Utilice la suma de comprobación devuelta para validar la integridad de los datos. Si la suma de comprobación que genera no coincide con la proporcionada por Amazon EBS, debe considerar que los datos no son válidos y volver a intentar su solicitud.

  • Cuando se utiliza la acción PutSnapshotBlock, la solicitud debe proporcionar una suma de comprobación SHA256 codificada en Base64 para los datos de bloque mediante el encabezado x-amz-Checksum y el algoritmo de suma de comprobación mediante el encabezado x-amz-Checksum-Algorithm. La suma de comprobación que proporcione se valida con una suma de comprobación generada por Amazon EBS para validar la integridad de los datos. Si las sumas de comprobación no se corresponden, la solicitud devuelve un error.

  • Cuando se utiliza la acción CompleteSnapshot, la solicitud puede proporcionar opcionalmente una suma de comprobación SHA256 codificada en Base64 agregada para el conjunto completo de datos agregados a la instantánea. Proporcione la suma de comprobación mediante el encabezado x-amz-Checksum, el algoritmo de suma de comprobación mediante el encabezado x-amz-Checksum-Algorithm y el método de agregación de suma de comprobación mediante el encabezado x-amz-Checksum-Aggregation-Method. Para generar la suma de comprobación agregada mediante el método de agregación lineal, organice las sumas de comprobación para cada bloque escrito en orden ascendente de su índice de bloque, concaténelas para formar una sola cadena y, a continuación, genere la suma de comprobación en toda la cadena utilizando el algoritmo SHA256.

Las sumas de comprobación de estas acciones forman parte del proceso de firma Signature Version 4.

Utilizar las API directas de EBS mediante la API o los AWS SDK

La referencia de API directas de EBS proporciona descripciones y sintaxis para cada una de las acciones y tipos de datos del servicio. También puede usar uno de los SDK de AWS para obtener acceso a una API adaptada al lenguaje de programación o plataforma que utilice. Para obtener más información, consulte AWS SDK.

Las API directas de EBS requieren una firma Signature Version 4 de AWS. Para obtener más información, consulte Usar la firma de Signature Version 4.

Listado de bloques en una instantánea

La siguiente solicitud de ejemplo ListChangedBlocks devuelve los índices de bloque y los tokens de bloque de bloques que están en la instantánea snap-0acEXAMPLEcf41648. El parámetro startingBlockIndex limita los resultados a índices de bloque mayores que 1000 y el parámetro maxResults limita los resultados a los primeros 100 bloques.

GET /snapshots/snap-0acEXAMPLEcf41648/blocks?maxResults=100&startingBlockIndex=1000 HTTP/1.1 Host: ebs.us-east-2.amazonaws.com Accept-Encoding: identity User-Agent: <User agent parameter> X-Amz-Date: 20200617T231953Z Authorization: <Authentication parameter>

La siguiente respuesta de ejemplo para la solicitud anterior enumera los índices de bloque y los tokens de bloque en la instantánea. Utilice la acción GetSnapshotBlock y especifique el índice de bloque y el token de bloque del bloque para el que desea obtener datos. Los tokens de bloque son válidos hasta el tiempo de caducidad indicado.

HTTP/1.1 200 OK x-amzn-RequestId: d6e5017c-70a8-4539-8830-57f5557f3f27 Content-Type: application/json Content-Length: 2472 Date: Wed, 17 Jun 2020 23:19:56 GMT Connection: keep-alive { "BlockSize": 524288, "Blocks": [ { "BlockIndex": 0, "BlockToken": "AAUBAcuWqOCnDNuKle11s7IIX6jp6FYcC/q8oT93913HhvLvA+3JRrSybp/0" }, { "BlockIndex": 1536, "BlockToken": "AAUBAWudwfmofcrQhGVlLwuRKm2b8ZXPiyrgoykTRC6IU1NbxKWDY1pPjvnV" }, { "BlockIndex": 3072, "BlockToken": "AAUBAV7p6pC5fKAC7TokoNCtAnZhqq27u6YEXZ3MwRevBkDjmMx6iuA6tsBt" }, { "BlockIndex": 3073, "BlockToken": "AAUBAbqt9zpqBUEvtO2HINAfFaWToOwlPjbIsQOlx6JUN/0+iMQl0NtNbnX4" }, ... ], "ExpiryTime": 1.59298379649E9, "VolumeSize": 3 }

Listado de bloques que son diferentes entre dos instantáneas

La siguiente solicitud de ejemplo ListChangedBlocks devuelve los índices de bloque y los tokens de bloque de los bloques que son distintos entre las instantáneas snap-0acEXAMPLEcf41648 y snap-0c9EXAMPLE1b30e2f. El parámetro startingBlockIndex limita los resultados a índices de bloque mayores que 0 y el parámetro maxResults limita los resultados a los primeros 500 bloques.

GET /snapshots/snap-0c9EXAMPLE1b30e2f/changedblocks?firstSnapshotId=snap-0acEXAMPLEcf41648&maxResults=500&startingBlockIndex=0 HTTP/1.1 Host: ebs.us-east-2.amazonaws.com Accept-Encoding: identity User-Agent: <User agent parameter> X-Amz-Date: 20200617T232546Z Authorization: <Authentication parameter>

La respuesta de ejemplo siguiente para la solicitud anterior muestra que los índices de bloque 0, 3072, 6002 y 6003 son diferentes entre las dos instantáneas. Además, los índices de bloque 6002 y 6003 solo existen en el primer ID de instantánea especificado y no en el segundo ID de instantánea, porque no hay un segundo token de bloque en la respuesta.

Utilice la acción GetSnapshotBlock y especifique el índice de bloque y el token de bloque del bloque para el que desea obtener los datos. Los tokens de bloque son válidos hasta el tiempo de caducidad indicado.

HTTP/1.1 200 OK x-amzn-RequestId: fb0f6743-6d81-4be8-afbe-db11a5bb8a1f Content-Type: application/json Content-Length: 1456 Date: Wed, 17 Jun 2020 23:25:47 GMT Connection: keep-alive { "BlockSize": 524288, "ChangedBlocks": [ { "BlockIndex": 0, "FirstBlockToken": "AAUBAVaWqOCnDNuKle11s7IIX6jp6FYcC/tJuVT1GgP23AuLntwiMdJ+OJkL", "SecondBlockToken": "AAUBASxzy0Y0b33JVRLoYm3NOresCxn5RO+HVFzXW3Y/RwfFaPX2Edx8QHCh" }, { "BlockIndex": 3072, "FirstBlockToken": "AAUBAcHp6pC5fKAC7TokoNCtAnZhqq27u6fxRfZOLEmeXLmHBf2R/Yb24MaS", "SecondBlockToken": "AAUBARGCaufCqBRZC8tEkPYGGkSv3vqvOjJ2xKDi3ljDFiytUxBLXYgTmkid" }, { "BlockIndex": 6002, "FirstBlockToken": "AAABASqX4/NWjvNceoyMUljcRd0DnwbSwNnes1UkoP62CrQXvn47BY5435aw" }, { "BlockIndex": 6003, "FirstBlockToken": "AAABASmJ0O5JxAOce25rF4P1sdRtyIDsX12tFEDunnePYUKOf4PBROuICb2A" }, ... ], "ExpiryTime": 1.592976647009E9, "VolumeSize": 3 }

Obtener datos de bloque de una instantánea

La siguiente solicitud de ejemplo GetSnapshotBlock devuelve los datos del índice de bloque 3072 con token de bloque AAUBARGCaufCqBRZC8tEkPYGGkSv3vqvOjJ2xKDi3ljDFiytUxBLXYgTmkid, en la instantánea snap-0c9EXAMPLE1b30e2f.

GET /snapshots/snap-0c9EXAMPLE1b30e2f/blocks/3072?blockToken=AAUBARGCaufCqBRZC8tEkPYGGkSv3vqvOjJ2xKDi3ljDFiytUxBLXYgTmkid HTTP/1.1 Host: ebs.us-east-2.amazonaws.com Accept-Encoding: identity User-Agent: <User agent parameter> X-Amz-Date: 20200617T232838Z Authorization: <Authentication parameter>

La siguiente respuesta de ejemplo para la solicitud anterior muestra el tamaño de los datos devueltos, la suma de comprobación para validar los datos y el algoritmo utilizado para generar la suma de comprobación. Los datos binarios se transmiten en el cuerpo de la respuesta y se representan como BlockData en el siguiente ejemplo.

HTTP/1.1 200 OK x-amzn-RequestId: 2d0db2fb-bd88-474d-a137-81c4e57d7b9f x-amz-Data-Length: 524288 x-amz-Checksum: Vc0yY2j3qg8bUL9I6GQuI2orTudrQRBDMIhcy7bdEsw= x-amz-Checksum-Algorithm: SHA256 Content-Type: application/octet-stream Content-Length: 524288 Date: Wed, 17 Jun 2020 23:28:38 GMT Connection: keep-alive BlockData

Iniciar una instantánea

La siguiente solicitud de ejemplo de StartSnapshot inicia una instantánea de 8 GiB, utilizando la instantánea snap-123EXAMPLE1234567 como instantánea principal. La nueva instantánea será una instantánea incremental de la instantánea principal. La instantánea se mueve a un estado de error si no hay solicitudes PUT o completas realizadas para la instantánea dentro del período de tiempo de espera de 60 minutos especificado. El token de cliente 550e8400-e29b-41d4-a716-446655440000 garantiza la idempotencia de la solicitud. Si se omite el token de cliente, el SDK de AWS genera automáticamente uno para usted. Para obtener más información acerca de la idempotencia, consulte Idempotencia para la API StartSnapshot.

POST /snapshots HTTP/1.1 Host: ebs.us-east-2.amazonaws.com Accept-Encoding: identity User-Agent: <User agent parameter> X-Amz-Date: 20200618T040724Z Authorization: <Authentication parameter> { "VolumeSize": 8, "ParentSnapshot": snap-123EXAMPLE1234567, "ClientToken": "550e8400-e29b-41d4-a716-446655440000", "Timeout": 60 }

La siguiente respuesta de ejemplo a la solicitud anterior muestra el ID de la instantánea, el ID de la cuenta de AWS, el estado, el tamaño del volumen en GiB y el tamaño de los bloques de la instantánea. La instantánea se inicia en un estado pendiente. Especifique el ID de instantánea en una solicitud PutSnapshotBlocks posterior para escribir datos en la instantánea.

HTTP/1.1 201 Created x-amzn-RequestId: 929e6eb9-7183-405a-9502-5b7da37c1b18 Content-Type: application/json Content-Length: 181 Date: Thu, 18 Jun 2020 04:07:29 GMT Connection: keep-alive { "BlockSize": 524288, "Description": null, "OwnerId": "138695307491", "Progress": null, "SnapshotId": "snap-052EXAMPLEc85d8dd", "StartTime": null, "Status": "pending", "Tags": null, "VolumeSize": 8 }

Inclusión de datos en una instantánea

La siguiente solicitud de ejemplo de PutSnapshot escribe 524288 Bytes de datos para bloquear el índice 1000 en la instantánea snap-052EXAMPLEc85d8dd. La suma de comprobación QOD3gmEQOXATfJx2Aa34W4FU2nZGyXfqtsUuktOw8DM= codificada en Base64 se generó utilizando el algoritmo SHA256. Los datos se transmiten en el cuerpo de la solicitud y se representan como BlockData en el siguiente ejemplo.

PUT /snapshots/snap-052EXAMPLEc85d8dd/blocks/1000 HTTP/1.1 Host: ebs.us-east-2.amazonaws.com Accept-Encoding: identity x-amz-Data-Length: 524288 x-amz-Checksum: QOD3gmEQOXATfJx2Aa34W4FU2nZGyXfqtsUuktOw8DM= x-amz-Checksum-Algorithm: SHA256 User-Agent: <User agent parameter> X-Amz-Date: 20200618T042215Z X-Amz-Content-SHA256: UNSIGNED-PAYLOAD Authorization: <Authentication parameter> BlockData

La siguiente respuesta de ejemplo para la solicitud anterior confirma la longitud de los datos, la suma de comprobación y el algoritmo de suma de comprobación para los datos recibidos por el servicio.

HTTP/1.1 201 Created x-amzn-RequestId: 643ac797-7e0c-4ad0-8417-97b77b43c57b x-amz-Checksum: QOD3gmEQOXATfJx2Aa34W4FU2nZGyXfqtsUuktOw8DM= x-amz-Checksum-Algorithm: SHA256 Content-Type: application/json Content-Length: 2 Date: Thu, 18 Jun 2020 04:22:12 GMT Connection: keep-alive {}

Completar una instantánea

El siguiente ejemplo Instantánea completa solicita la instantánea completa snap-052EXAMPLEc85d8dd. El comando especifica que 5 bloques se escribieron en la instantánea. La suma de comprobación 6D3nmwi5f2F0wlh7xX8QprrJBFzDX8aacdOcA3KCM3c= representa la suma de comprobación del conjunto completo de datos escritos en una instantánea.

POST /snapshots/completion/snap-052EXAMPLEc85d8dd HTTP/1.1 Host: ebs.us-east-2.amazonaws.com Accept-Encoding: identity x-amz-ChangedBlocksCount: 5 x-amz-Checksum: 6D3nmwi5f2F0wlh7xX8QprrJBFzDX8aacdOcA3KCM3c= x-amz-Checksum-Algorithm: SHA256 x-amz-Checksum-Aggregation-Method: LINEAR User-Agent: <User agent parameter> X-Amz-Date: 20200618T043158Z Authorization: <Authentication parameter>

La siguiente es una respuesta de ejemplo para la solicitud anterior.

HTTP/1.1 202 Accepted x-amzn-RequestId: 06cba5b5-b731-49de-af40-80333ac3a117 Content-Type: application/json Content-Length: 20 Date: Thu, 18 Jun 2020 04:31:50 GMT Connection: keep-alive {"Status":"pending"}

Utilizar las API directas de EBS mediante la línea de comandos

En los siguientes ejemplos, se muestra cómo utilizar las API directas de EBS con la AWS Command Line Interface (AWS CLI). Para obtener más información acerca de la instalación y configuración de la AWS CLI, consulte Instalación de la AWS CLI y Configuración rápida de la AWS CLI.

Listado de bloques en una instantánea

El siguiente comando de ejemplo list-snapshot-blocks devuelve los índices de bloque y los tokens de bloque de bloques que están en la instantánea snap-0987654321. El parámetro --starting-block-index limita los resultados a índices de bloque mayores que 1000 y el parámetro --max-results limita los resultados a los primeros 100 bloques.

aws ebs list-snapshot-blocks --snapshot-id snap-0987654321 --starting-block-index 1000 --max-results 100

La siguiente respuesta de ejemplo para el comando anterior enumera los índices de bloque y los tokens de bloque en la instantánea. Utilice el comando get-snapshot-block y especifique el índice de bloque y el token de bloque del bloque para el que desea obtener datos. Los tokens de bloque son válidos hasta el tiempo de caducidad indicado.

{ "Blocks": [ { "BlockIndex": 1001, "BlockToken": "AAABAV3/PNhXOynVdMYHUpPsetaSvjLB1dtIGfbJv5OJ0sX855EzGTWos4a4" }, { "BlockIndex": 1002, "BlockToken": "AAABATGQIgwr0WwIuqIMjCA/Sy7e/YoQFZsHejzGNvjKauzNgzeI13YHBfQB" }, { "BlockIndex": 1007, "BlockToken": "AAABAZ9CTuQtUvp/dXqRWw4d07eOgTZ3jvn6hiW30W9duM8MiMw6yQayzF2c" }, { "BlockIndex": 1012, "BlockToken": "AAABAQdzxhw0rVV6PNmsfo/YRIxo9JPR85XxPf1BLjg0Hec6pygYr6laE1p0" }, { "BlockIndex": 1030, "BlockToken": "AAABAaYvPax6mv+iGWLdTUjQtFWouQ7Dqz6nSD9L+CbXnvpkswA6iDID523d" }, { "BlockIndex": 1031, "BlockToken": "AAABATgWZC0XcFwUKvTJbUXMiSPg59KVxJGL+BWBClkw6spzCxJVqDVaTskJ" }, ... ], "ExpiryTime": 1576287332.806, "VolumeSize": 32212254720, "BlockSize": 524288 }

Listado de bloques que son diferentes entre dos instantáneas

El siguiente comando de ejemplo list-changed-blocks devuelve los índices de bloque y los tokens de bloque de bloques que son diferentes entre instantáneas snap-1234567890 y snap-0987654321. El parámetro --starting-block-index limita los resultados a índices de bloque mayores que 0 y el parámetro --max-results limita los resultados a los primeros 500 bloques.

aws ebs list-changed-blocks --first-snapshot-id snap-1234567890 --second-snapshot-id snap-0987654321 --starting-block-index 0 --max-results 500

La respuesta de ejemplo siguiente del comando anterior muestra que los índices de bloque 0, 6000, 6001, 6002 y 6003 son diferentes entre las dos instantáneas. Además, los índices de bloque 6001, 6002 y 6003 solo existen en el primer ID de instantánea especificado y no en el segundo ID de instantánea, porque no hay un segundo token de bloque en la respuesta.

Utilice el comando get-snapshot-block y especifique el índice de bloque y el token de bloque del bloque para el que desea obtener datos. Los tokens de bloque son válidos hasta el tiempo de caducidad indicado.

{ "ChangedBlocks": [ { "BlockIndex": 0, "FirstBlockToken": "AAABAVahm9SO60Dyi0ORySzn2ZjGjW/KN3uygGlS0QOYWesbzBbDnX2dGpmC", "SecondBlockToken": "AAABAf8o0o6UFi1rDbSZGIRaCEdDyBu9TlvtCQxxoKV8qrUPQP7vcM6iWGSr" }, { "BlockIndex": 6000, "FirstBlockToken": "AAABAbYSiZvJ0/R9tz8suI8dSzecLjN4kkazK8inFXVintPkdaVFLfCMQsKe", "SecondBlockToken": "AAABAZnqTdzFmKRpsaMAsDxviVqEI/3jJzI2crq2eFDCgHmyNf777elD9oVR" }, { "BlockIndex": 6001, "FirstBlockToken": "AAABASBpSJ2UAD3PLxJnCt6zun4/T4sU25Bnb8jB5Q6FRXHFqAIAqE04hJoR" }, { "BlockIndex": 6002, "FirstBlockToken": "AAABASqX4/NWjvNceoyMUljcRd0DnwbSwNnes1UkoP62CrQXvn47BY5435aw" }, { "BlockIndex": 6003, "FirstBlockToken": "AAABASmJ0O5JxAOce25rF4P1sdRtyIDsX12tFEDunnePYUKOf4PBROuICb2A" }, ... ], "ExpiryTime": 1576308931.973, "VolumeSize": 32212254720, "BlockSize": 524288, "NextToken": "AAADARqElNng/sV98CYk/bJDCXeLJmLJHnNSkHvLzVaO0zsPH/QM3Bi3zF//O6Mdi/BbJarBnp8h" }

Obtener datos de bloque de una instantánea

El siguiente comando de ejemplo get-snapshot-block devuelve los datos en el índice de bloque 6001 con token de bloque AAABASBpSJ2UAD3PLxJnCt6zun4/T4sU25Bnb8jB5Q6FRXHFqAIAqE04hJoR, en la instantánea snap-1234567890. Los datos binarios se envían al archivo data en el directorio C:\Temp de un equipo con Windows. Si ejecuta el comando en un equipo Linux o Unix, reemplace la ruta de salida por /tmp/data para enviar los datos al archivo data en el directorio /tmp.

aws ebs get-snapshot-block --snapshot-id snap-1234567890 --block-index 6001 --block-token AAABASBpSJ2UAD3PLxJnCt6zun4/T4sU25Bnb8jB5Q6FRXHFqAIAqE04hJoR C:/Temp/data

La respuesta de ejemplo siguiente para el comando anterior muestra el tamaño de los datos devueltos, la suma de comprobación para validar los datos y el algoritmo de la suma de comprobación. Los datos binarios se guardan automáticamente en el directorio y archivo especificados en el comando de la solicitud.

{ "DataLength": "524288", "Checksum": "cf0Y6/Fn0oFa4VyjQPOa/iD0zhTflPTKzxGv2OKowXc=", "ChecksumAlgorithm": "SHA256" }

Iniciar una instantánea

El siguiente comando de ejemplo start-snapshot inicia una instantánea de 8 GiB, utilizando la instantánea snap-123EXAMPLE1234567 como instantánea principal. La nueva instantánea será una instantánea incremental de la instantánea principal. La instantánea se mueve a un estado de error si no hay solicitudes PUT o completas realizadas para la instantánea dentro del período de tiempo de espera de 60 minutos especificado. El token de cliente 550e8400-e29b-41d4-a716-446655440000 garantiza la idempotencia de la solicitud. Si se omite el token de cliente, el SDK de AWS genera automáticamente uno para usted. Para obtener más información acerca de la idempotencia, consulte Idempotencia para la API StartSnapshot.

aws ebs start-snapshot --volume-size 8 --parent-snapshot snap-123EXAMPLE1234567 --timeout 60 --client-token 550e8400-e29b-41d4-a716-446655440000

La siguiente respuesta de ejemplo al comando anterior muestra el ID de la instantánea, el ID de la cuenta de AWS, el estado, el tamaño del volumen en GiB y el tamaño de los bloques de la instantánea. La instantánea se inicia en un estado pending. Especifique el ID de instantánea en los comandos put-snapshot-block siguientes para escribir datos en la instantánea y, a continuación, utilice el comando complete-snapshot para completar la instantánea y cambiar su estado a completed.

{ "SnapshotId": "snap-0aaEXAMPLEe306d62", "OwnerId": "111122223333", "Status": "pending", "VolumeSize": 8, "BlockSize": 524288 }

Inclusión de datos en una instantánea

El siguiente comando de ejemplo put-snapshot escribe 524288 Bytes de datos para bloquear el índice 1000 en la instantánea snap-0aaEXAMPLEe306d62. La suma de comprobación QOD3gmEQOXATfJx2Aa34W4FU2nZGyXfqtsUuktOw8DM= codificada en Base64 se generó utilizando el algoritmo SHA256. Los datos que se transmiten están en el archivo /tmp/data.

aws ebs put-snapshot-block --snapshot-id snap-0aaEXAMPLEe306d62 --block-index 1000 --data-length 524288 --block-data /tmp/data --checksum QOD3gmEQOXATfJx2Aa34W4FU2nZGyXfqtsUuktOw8DM= --checksum-algorithm SHA256

La respuesta de ejemplo siguiente para el comando anterior confirma la longitud de los datos, la suma de comprobación y el algoritmo de suma de comprobación para los datos recibidos por el servicio.

{ "DataLength": "524288", "Checksum": "QOD3gmEQOXATfJx2Aa34W4FU2nZGyXfqtsUuktOw8DM=", "ChecksumAlgorithm": "SHA256" }

Completar una instantánea

El siguiente comando de ejemplo complete-snapshot completa la instantánea snap-0aaEXAMPLEe306d62. El comando especifica que 5 bloques se escribieron en la instantánea. La suma de comprobación 6D3nmwi5f2F0wlh7xX8QprrJBFzDX8aacdOcA3KCM3c= representa la suma de comprobación del conjunto completo de datos escritos en una instantánea. Para obtener más información acerca de las sumas de comprobación, consulte Usar sumas de comprobación anteriormente en esta guía.

aws ebs complete-snapshot --snapshot-id snap-0aaEXAMPLEe306d62 --changed-blocks-count 5 --checksum 6D3nmwi5f2F0wlh7xX8QprrJBFzDX8aacdOcA3KCM3c= --checksum-algorithm SHA256 --checksum-aggregation-method LINEAR

A continuación, se muestra una respuesta de ejemplo para el comando anterior.

{ "Status": "pending" }

Optimizar el rendimiento

Puede ejecutar solicitudes de API simultáneamente. Suponiendo que la latencia de PutSnapshotBlock es de 100 ms, un subproceso puede procesar 10 solicitudes en un segundo. Además, suponiendo que su aplicación cliente crea múltiples hilos y conexiones (por ejemplo, 100 conexiones), puede realizar 1000 (10 * 100) solicitudes por segundo en total. Esto corresponderá a un rendimiento de alrededor de 500 MB por segundo.

La siguiente lista contiene algunas cosas que debe buscar en su aplicación:

  • ¿Cada hilo usa una conexión separada? Si las conexiones están limitadas en la aplicación, varios subprocesos esperarán a que la conexión esté disponible y observará un menor rendimiento.

  • ¿Hay algún tiempo de espera en la aplicación entre dos solicitudes PUT? Esto reducirá el rendimiento efectivo de un subproceso.

  • El límite de ancho de banda de la instancia: si el ancho de banda de la instancia es compartido por otras aplicaciones, podría limitar el rendimiento disponible para las solicitudes PutSnapshotBlock.

Asegúrese de tomar nota de otras cargas de trabajo que pudieran estar ejecutándose en la cuenta para evitar cuellos de botella. También debe crear mecanismos de reintento en sus flujos de trabajo de API directas de EBS para controlar las limitaciones controladas, los tiempos de espera y la falta de disponibilidad del servicio.

Revise las cuotas de servicio de las API directas de EBS para determinar las solicitudes de API máximas que puede ejecutar por segundo. Para obtener más información, consulte Puntos de enlace y cuotas de Amazon Elastic Block Store en la Referencia general de AWS.

Preguntas frecuentes

¿Se puede acceder a una instantánea usando las API directas de EBS si tiene un estado pendiente?

No. Solo se puede acceder a la instantánea si tiene un estado completado.

¿Devuelven las API directas de EBS los índices de bloque en orden numérico?

Sí. Los índices de bloque devueltos son únicos y están en orden numérico.

¿Puedo enviar una solicitud con un valor del parámetro MaxResults inferior a 100?

No. El valor mínimo del parámetro MaxResult que puede utilizar es 100. Si envía una solicitud con un valor del parámetro MaxResult inferior a 100 y hay más de 100 bloques en la instantánea, la API devolverá al menos 100 resultados.

¿Puedo ejecutar solicitudes de API simultáneamente?

Puede ejecutar solicitudes de API simultáneamente. Asegúrese de tomar nota de otras cargas de trabajo que pudieran estar ejecutándose en la cuenta para evitar cuellos de botella. También debe crear mecanismos de reintento en sus flujos de trabajo de API directas de EBS para controlar las limitaciones controladas, los tiempos de espera y la falta de disponibilidad del servicio. Para obtener más información, consulte Optimizar el rendimiento.

Revise las cuotas de servicio de las API directas de EBS para determinar las solicitudes de API que puede ejecutar por segundo. Para obtener más información, consulte Puntos de enlace y cuotas de Amazon Elastic Block Store en la Referencia general de AWS.

Al ejecutar la acción ListChangedBlocks, ¿es posible obtener una respuesta vacía aunque haya bloques en la instantánea?

Sí. Si los bloques modificados son escasos en la instantánea, la respuesta puede estar vacía, pero la API devolverá un valor de token de página siguiente. Utilice el valor del token de página siguiente para continuar con la siguiente página de resultados. Sabrá que ha llegado a la última página de resultados cuando la API devuelva un valor null de token de página siguiente.

Si se especifica el parámetro NextToken junto con un parámetro StartingBlockIndex, ¿cuál de los dos se utiliza?

Se utiliza NextToken y se omite StartingBlockIndex.

¿Cuánto tiempo son válidos los tokens de bloque y los tokens de siguiente página?

Los tokens de bloque son válidos durante siete días, y los tokens de siguiente página son válidos durante 60 minutos.

¿Se admiten instantáneas cifradas?

Sí. Se puede acceder a las instantáneas cifradas mediante las API directas de EBS.

Para poder acceder a una instantánea cifrada, el usuario debe tener acceso a la clave de KMS utilizada para cifrar la instantánea y a la acción de descifrado de AWS KMS. Consulte la sección Permisos para los usuarios de IAM anterior de esta guía para saber qué política de AWS KMS debe asignarse a un usuario.

¿Se admiten instantáneas públicas?

No se admiten instantáneas públicas.

¿El bloque de enumeración de instantáneas devuelve todos los índices de bloque y tokens de bloque de una instantánea o solo aquellos que tienen datos escritos en ellos?

Devuelve solo los índices y los tokens de bloque que tienen datos escritos en ellos.

¿Puedo obtener un historial de todas las llamadas a la API realizadas por las API directas de EBS en mi cuenta a los fines de realizar tareas de análisis de seguridad y solución de problemas operativos?

Sí. Para recibir un historial de llamadas a la API de las API directas de EBS realizadas en su cuenta, active AWS CloudTrail en la AWS Management Console. Para obtener más información, consulte Registrar las llamadas a la API de las API directas de EBS con AWS CloudTrail.