Usando FineUploader y en mi página, intenté un reintento manual de una solicitud de carga fallida anteriormente (varias horas después).
La solicitud de firma a mi servidor viene en "encabezados", es decir, señalando una parte múltiple. Hago los cálculos y envío solo la firma (no hay archivo de política aquí), siguiendo en gran medida una implementación de Python.
Sin embargo, AWS rechaza la solicitud con SignatureDoesNotMatch.
¿Existe un límite de tiempo en el lado de AWS dentro del cual se debe volver a intentar la solicitud? A continuación se muestra la implementación JS de la solicitud de firma de varias partes. Cualquier ayuda appreicated.
function s3CredentialsMP(config, headers) { console.log("Signing the below str"); console.log(headers); splits = headers.split("POST"); creq = splits[1]; bHdr = splits[0]; canonical_req = "POST" + creq; algo = bHdr[0]; amz_date = bHdr[1]; cred_scope = bHdr[2]; cred_parts = cred_scope.split('/'); date_stamp = cred_parts[0]; regionName = cred_parts[1]; serviceName = cred_parts[2]; signingKey = s3UploadSigningKey(config, date_stamp, regionName, serviceName); CryptoJS = require("crypto-js"); hexDigestCreq = CryptoJS.SHA256(creq).toString(CryptoJS.enc.Hex); string_to_sign = algo + "\n" + amz_date + "\n" + cred_scope + "\n" + hexDigestCreq; sigVal = hmac(config.secretKey, string_to_sign).toString('hex'); return { signature: sigVal } } Params IN multi-part sig request : AWS4-HMAC-SHA256 20170330T120109Z 20170330/us-west-2/s3/aws4_request POST /1143%20Delivered.las uploads= host:lasfupload.s3-us-west-2.amazonaws.com x-amz-acl:private x-amz-content-sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 x-amz-date:20170330T120109Z x-amz-meta-qqfilename:1143%20Delivered.las host;x-amz-acl;x-amz-content-sha256;x-amz-date;x-amz-meta-qqfilename e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 Signature : 2231a6dd8dc0917def780bfc114ed10e459f8f748195c2d05c217684461dfec1