Protección de la integridad de los datos con sumas de comprobación de Amazon S3 - AWS SDK para JavaScript

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.

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

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 configuraciones globales para las protecciones de integridad de los datos que puede configurar externamente, sobre las que puede leer en la Guía de referencia de AWS SDKs and Tools.

Cargar un objeto

Los objetos se cargan en Amazon S3 mediante el PutObjectcomando deS3Client. 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 utilice, 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

SDK para la JavaScript versión Comportamiento de suma de comprobación
Anterior a la 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 la compara 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. AWS SDK para JavaScript Pueden usar las opciones de la Upload biblioteca desde y @aws-sdk/lib-storage hasta usar sumas de verificación con cargas de varias partes.

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();