Scale up as you grow — whether you're running one virtual machine or ten thousand.

From GPU-powered inference and Kubernetes to managed databases and storage, get everything you need to build, scale, and deploy intelligent applications.

This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!
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.
Accepted Answer
The AWS signature formats can be a bit complicated. Though the reason for making Spaces compatible with the S3 API is that there are already quite a few tools that can work with it. If you’re working with Node, I’d encourage you to use one of the existing libraries.
The aws-sdk-js can help generate these “pre-signed” URLs. Here’s a quick basic example of it’s usage:
const AWS = require('aws-sdk')
const spacesEndpoint = new AWS.Endpoint('nyc3.digitaloceanspaces.com');
const s3 = new AWS.S3({
endpoint: spacesEndpoint,
accessKeyId: 'ACCESSKEY',
secretAccessKey: 'SECRETKEY'
});
const bucket = 'my-bucket-name'
const key = 'my-file-name.ext'
const expireSeconds = 60 * 5
const url = s3.getSignedUrl('getObject', {
Bucket: bucket,
Key: key,
Expires: expireSeconds
})
console.log(url)
I hope no one minds me ressurecting this thread…
Does the approach above, where you use the existing AWS libraries to generate a URL, mean you could just use that S3 URL and transform it according to a certain pattern (ex. substitute AWS domain for DO domain etc) and use that new URL to download/upload objects from/to Spaces?