Hello everyone, I’m trying to create a new bucket on my space using the node AWS S3 API. It says on the official DO docs that CRUD operations are supported using the AWS S3 API. Here is the code I’m attempting to use:
const spacesEndpoint = new AWS.Endpoint('sfo2.digitaloceanspaces.com');
let connection = new AWS.S3({
endpoint: spacesEndpoint,
accessKeyId: SPACES_KEY,
secretAccessKey: SPACES_SEC
});
var bucketParams = {
Bucket : 'Test Bucket',
};
// call spaces to create the bucket
connection.createBucket(bucketParams, function(err, data) {
if (err) {
console.log("CANT CREATE BUCKET", err);
} else {
console.log(data);
}
});
However when attempting to do this I get the following error:
CANT CREATE BUCKET { InvalidRequest: Malformed request
at Request.extractError (/Users/.../api/node_modules/aws-sdk/lib/services/s3.js:585:35)
at Request.callListeners (/Users/.../api/node_modules/aws-sdk/lib/sequential_executor.js:106:20)
at Request.emit (/Users/.../api/node_modules/aws-sdk/lib/sequential_executor.js:78:10)
at Request.emit (/Users/j.../api/node_modules/aws-sdk/lib/request.js:683:14)
at Request.transition (/Users/.../api/node_modules/aws-sdk/lib/request.js:22:10)
at AcceptorStateMachine.runTo (/Users/.../api/node_modules/aws-sdk/lib/state_machine.js:14:12)
at /Users.../api/node_modules/aws-sdk/lib/state_machine.js:26:10
at Request. (/Users/.../api/node_modules/aws-sdk/lib/request.js:38:9)
at Request. (/Users/.../api/node_modules/aws-sdk/lib/request.js:685:12)
at Request.callListeners (/Users/.../api/node_modules/aws-sdk/lib/sequential_executor.js:116:18)
message: 'Malformed request',
code: 'InvalidRequest',
region: null,
time: 2019-03-08T06:38:42.054Z,
requestId: null,
extendedRequestId: undefined,
cfId: undefined,
statusCode: 400,
retryable: false,
retryDelay: 15.49543719310611 }
I can’t find any documentation about using this or creating a bucket with this API on your site, so I thought I’d open this ticket. I know the connection is good because I can use the upload endpoint to upload files, but can’t create buckets. Does anyone have any idea what’s going on here or what I’m missing?
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!
Hey friend,
I’m not an expert on node myself, so it may be possible that someone can come in behind me and offer a more complete answer. However, I do love me some Python and so I just used the sample script here to create a bucket and verify that the API is functioning before digging further:
https://developers.digitalocean.com/documentation/spaces/
All went well there, so I started looking at the two code samples here (mine and yours), and then this part of your output stood out to me after I noticed a difference:
region: null,
I do not know about the capabilities of the library being used here, but it looks like our system does require the region name to be sent in addition to the region-specific end point. Perhaps if that can be reconciled, this might work?
Also in your sample you have a space in the bucket name, and that may just be for pasting it here, but make sure that you don’t have one in there when you run the code.
Jarland
Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.
Full documentation for every DigitalOcean product.
The Wave has everything you need to know about building a business, from raising funding to marketing your product.
Stay up to date by signing up for DigitalOcean’s Infrastructure as a Newsletter.
New accounts only. By submitting your email you agree to our Privacy Policy
Scale up as you grow — whether you're running one virtual machine or ten thousand.
Sign up and get $200 in credit for your first 60 days with DigitalOcean.*
*This promotional offer applies to new accounts only.