Estoy cargando un archivo a S3 desde iOS usando AWSS3TransferUtility y tratando de establecer metadatos personalizados en el archivo. Lo estoy probando usando la clave de metadatos X-Amz-Meta-uploadParameters y el valor "Test".
Aparece correctamente en los encabezados de solicitud:
... &X-Amz-Expires=2999&X-Amz-Meta-uploadParameters=Test&X-Amz-Security-Token= ... Claramente algo está pasando, ya que después de cargar la clave uploadparameters sí aparece en las propiedades del objeto en la consola S3, pero con un valor en blanco. Para verificar, utilicé s3api --head-object de la CLI y esto es lo que se devuelve:
{ "AcceptRanges": "bytes", "LastModified": "Thu, 16 Mar 2017 08:04:41 GMT", "ContentLength": 1331730, "ETag": "\"[hex data here]\"", "ContentType": "image/jpeg", "Metadata": { "uploadparameters": "" } } Así es como configuro el valor para AWSS3TransferUtilityUploadExpression :
let params = [ "X-Amz-Meta-uploadParameters": "Test" ] //Copy the custom Meta information into the expression for (key, value) in params { expression.setValue(value, forRequestParameter: key) }Después de jugar con todo tipo de variaciones, todavía no estoy más cerca de establecer metadatos reales. ¿Que me estoy perdiendo aqui?
Fijado. Después de publicar esta pregunta, continué ajustando las cosas con frustración y tropecé con la respuesta.
Alterar la clave a todas las minúsculas es el giro mágico, es decir, x-amz-meta-uploadparameters en lugar de X-Amz-Meta-uploadParameters . Por cierto, también falla con X-Amz-Meta-uploadparameters .