2011-12-23 43 views
13

Intento verificar la integridad de un archivo que se ha subido a un depósito pero no encuentro ninguna información al respecto.Amazon S3 y Checksum

En los encabezados del archivo, hay una "E-tag" pero creo que no es una suma de comprobación md5.

Entonces, ¿cómo puedo verificar si el archivo que cargué en Amazon S3 es el mismo que tengo en mi computadora?

Gracias. :)

+0

Casi cubierto en http://stackoverflow.com/questions/1775816/how-to-get-the-md5sum-of-a-file-on-amazons-s3, aunque la respuesta de @ svetianov parece un poco más completa . –

Respuesta

22

Si está utilizando la API REST para cargar un objeto (hasta 5 GB) en una sola operación, a continuación, puede agregar el encabezado Content-MD5 en su PUT petición. Según el la documentación S3 para PUT, la cabecera Content-MD5 es:

El base64 codificada de 128 bits MD5 digesto del mensaje (sin las cabeceras) de acuerdo con RFC 1864. Esta cabecera puede utilizarse como una verificación de integridad del mensaje para verificar que los datos sean los mismos que se enviaron originalmente. Aunque es opcional, recomendamos usar el mecanismo Content-MD5 como una verificación de integridad de extremo a extremo.

Compruebe this answer sobre cómo calcular un resumen MD5 de 128 bits codificado en base64. Si está utilizando s3curl, puede incluir el resumen calculado en los encabezados de su solicitud usando la opción --contentMd5.

Si el resumen MD5 calcula por Amazon tras la finalización de subida no coincide con el resumen md5 que ya ha proporcionado en la cabecera Content-MD5, Amazon responderá con un código de error BadDigest.

Si está utilizando la carga de varias partes, el encabezado Content-MD5 sirve como una verificación de integridad para cada parte individualmente. Una vez finalizada la carga de varias partes, Amazon no proporciona actualmente una forma de verificar la integridad del archivo ensamblado.

+0

¡Gracias! :) – Florent

+0

desarrollé una aplicación de iPhone para subir videos a Amazon, y codifiqué el archivo en MD64 de 128 bits codificado en base64, al completar la carga de archivos recibo "ErrorCode: BadDigest, Mensaje: El contenido-MD5 que especificó no coincide con qué recibimos." ¿Esto significa que no puedo hacer coincidir los valores md5 con mi servidor pohone y s3? –