Question
Presigned URL SignatureDoesNotMatch on Digital Oceans Spaces
Hi all. I’m new to spaces and I can’t seem to get a valid Pre-signed URL with this code. If anyone has pointers or corrections I would really appreciate it.
I have also added a wildcard CORS with all permissions.
module.exports = async function (context, req) {
const aws = require('aws-sdk');
var signedURL;
let DO_ENDPOINT = req.body.do_endpoint;
let DO_ACCESS_KEY_ID = req.body.access_key;
let DO_SECRET_ACCESS_KEY = req.body.secret_key;
let DO_SPACE = req.body.bucket;
let DO_GUID = req.body.key;
const spacesEndpoint = new aws.Endpoint(DO_ENDPOINT);
const s3 = new aws.S3({
endpoint: spacesEndpoint,
accessKeyId: DO_ACCESS_KEY_ID,
secretAccessKey: DO_SECRET_ACCESS_KEY,
});
const s3Params = {
Bucket: DO_SPACE,
Key: DO_GUID,
ACL: 'public-read',
Expires: 600,
};
s3.getSignedUrl('putObject', s3Params, function (err, url) {
if (err) {
context.res = {
status: 400,
body: "Something went wrong, please try again."
};
} else {
context.res = {
body: url
};
}
});
};
The error I keep getting is:
<?xml version="1.0" encoding="UTF-8"?>
<Error>
<Code>SignatureDoesNotMatch</Code>
<RequestId>tx0000000000000a3a794c8-005d4ad207-11f28ea-ams3a</RequestId>
<HostId>11f28ea-ams3a-ams3</HostId>
</Error>
These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.
×