La Guía de referencia de la API de AWS SDK for JavaScript V3 describe en detalle todas las operaciones de la API para la versión 3 (V3) de AWS SDK for JavaScript.
Protección de la integridad de los datos con sumas de comprobación de Amazon S3
Amazon Simple Storage Service (Amazon S3) permite especificar una suma de comprobación al cargar un objeto. Cuando se especifica una suma de comprobación, esta se almacena con el objeto y se puede validar cuando se descarga el objeto.
Las sumas de comprobación proporcionan un nivel adicional de integridad de los datos al transferir archivos. Con las sumas de comprobación, puede comprobar la coherencia de datos verificando que el archivo recibido coincide con el archivo original. Para obtener más información sobre las sumas de comprobación con Amazon S3, consulte la Guía del usuario de Amazon Simple Storage Service, que incluye los algoritmos compatibles.
Puede elegir el algoritmo que mejor se adapte a sus necesidades y dejar que el SDK calcule la suma de comprobación. También puede especificar un valor de suma de comprobación calculado previamente mediante uno de los algoritmos compatibles.
nota
A partir de la versión 3.729.0 del AWS SDK para JavaScript, el SDK proporciona protecciones de integridad predeterminadas mediante el cálculo automático de una suma de comprobación CRC32 para las cargas. El SDK calcula esta suma de comprobación si no se proporciona un valor de suma de comprobación calculado previamente o si no se especifica un algoritmo que el SDK deba usar para calcular una suma de comprobación.
El SDK también proporciona una configuración global para las protecciones de integridad de datos que puede establecer de forma externa, y sobre la que puede obtener más información en la Guía de referencia de las herramientas y los SDK de AWS.
Cargar un objeto
Para cargar objetos en Amazon S3, use el comando putObject del S3Client. Utilice el parámetro ChecksumAlgorithm del compilador para que PutObjectRequest habilite el cálculo de la suma de comprobación y especifique el algoritmo. Consulte los algoritmos de suma de comprobación compatibles para conocer los valores válidos.
El siguiente fragmento de código muestra una solicitud para cargar un objeto con una suma de comprobación de CRC-32. Cuando el SDK envía la solicitud, calcula la suma de comprobación de CRC-32 y carga el objeto. Amazon S3 almacena la suma de comprobación en el objeto.
import { ChecksumAlgorithm, S3 } from "@aws-sdk/client-s3"; const client = new S3(); const response = await client.putObject({ Bucket: "my-bucket", Key: "my-key", Body: "Hello, world!", ChecksumAlgorithm: ChecksumAlgorithm.CRC32, });
Si no proporciona un algoritmo de suma de comprobación con la solicitud, el comportamiento de la suma de comprobación varía en función de la versión del SDK que utilices, tal y como se muestra en la siguiente tabla.
Comportamiento de la suma de comprobación cuando no se proporciona ningún algoritmo de suma de comprobación
| Versión del SDK para JavaScript | Comportamiento de suma de comprobación |
|---|---|
| Antes de 3.729.0 | El SDK no calcula automáticamente una suma de comprobación basada en CRC ni la proporciona en la solicitud. |
| 3.729.0 o posterior | El SDK usa el algoritmo CRC32 para calcular la suma de comprobación y la proporciona en la solicitud. Amazon S3 valida la integridad de la transferencia calculando su propia suma de comprobación CRC32 y comparándola con la suma de comprobación proporcionada por el SDK. Si las sumas de comprobación coinciden, la suma de comprobación se guarda con el objeto. |
Si la suma de comprobación que calcula el SDK no coincide con la suma de comprobación que calcula Amazon S3 al recibir la solicitud, se devuelve un error.
Utilizar un valor de suma de comprobación calculado previamente
Un valor de suma de comprobación precalculado proporcionado con la solicitud desactiva el cálculo automático por parte del SDK y utiliza el valor proporcionado en su lugar.
En el siguiente ejemplo se muestra una solicitud con una suma de comprobación SHA-256 precalculada.
import { S3 } from "@aws-sdk/client-s3"; import { createHash } from "node:crypto"; const client = new S3(); const Body = "Hello, world!"; const ChecksumSHA256 = await createHash("sha256").update(Body).digest("base64"); const response = await client.putObject({ Bucket: "my-bucket", Key: "my-key", Body, ChecksumSHA256, });
Si Amazon S3 determina que el valor de la suma de comprobación es incorrecto para el algoritmo especificado, el servicio devuelve una respuesta de error.
Cargas multiparte
También puede utilizar sumas de comprobación en las cargas multiparte. El AWS SDK para JavaScript puede usar las opciones de la biblioteca Upload de @aws-sdk/lib-storage para usar sumas de comprobación en cargas multiparte.
import { ChecksumAlgorithm, S3 } from "@aws-sdk/client-s3"; import { Upload } from "@aws-sdk/lib-storage"; import { createReadStream } from "node:fs"; const client = new S3(); const filePath = "/path/to/file"; const Body = createReadStream(filePath); const upload = new Upload({ client, params: { Bucket: "my-bucket", Key: "my-key", Body, ChecksumAlgorithm: ChecksumAlgorithm.CRC32, }, }); await upload.done();