我正在尝试使用基本教程来创建一个S3存储桶,如下所示
var AWS = require('aws-sdk');
AWS.config.loadFromPath('./myawsconfig.json');
AWS.config.update({region: 'eu-west-1'});
var s3 = new AWS.S3();
s3.client.createBucket({Bucket: 'pBucket'}, function() {
var data = {Bucket: 'pBucket', Key: 'myKey', Body: 'Hello!'};
s3.client.putObject(data, function(err, data) {
if (err) {
console.log("Error uploading data: ", err);
} else {
console.log("Successfully uploaded data to myBucket/myKey");
}
});
});
但我收到以下错误
node createbucket.js
Error uploading data: { [NoSuchBucket: The specified bucket does not exist]
message: 'The specified bucket does not exist',
code: 'NoSuchBucket',
name: 'NoSuchBucket',
statusCode: 404,
retryable: false }
答案 0 :(得分:1)
我刚遇到这个问题,显然Node.js教程代码没有编译。我有一个var对象没有createBucket方法。
这有效:
var AWS = require('aws-sdk');
AWS.config.loadFromPath('./credentials.json');
// Set your region for future requests.
AWS.config.update({region: 'us-east-1'});
// Create a bucket and put something in it.
var s3 = new AWS.S3();
s3.client.createBucket({Bucket: 'hackathon-test'}, function() {
var data = {Bucket: 'hackathon-test', Key: 'myKey', Body: 'Hello!'};
s3.client.putObject(data, function(err, data) {
if (err) {
console.log("Error uploading data: ", err);
} else {
console.log("Successfully uploaded data to myBucket/myKey");
}
});
});
答案 1 :(得分:1)
我遇到了这个问题,发现我的api用户没有创建存储桶的权限。
稍微更彻底的错误检查显示了这个......
s3.client.createBucket({Bucket: 'someBucket'}, function(err) {
if (err) {
console.log("Error creating bucket: ", err);
} else {
console.log("Successfully created bucket 'someBucket'");
}
// ...
答案 2 :(得分:0)
我错过了一些指针,有人可能会发现有用的
如果您将区域设置为S3对象var s3 = new AWS.S3({region: 'us-west-1'});
的一部分,则呼叫将失败(根据我的经验)。
因此,您可以通过
a)AWS.config.update({ region: 'eu-west-1' });
b)作为createBucket上的参数的一部分
s3.createBucket({
Bucket: bucketName,
CreateBucketConfiguration: {
LocationConstraint: "eu-west-1"
}
}, function () {
另外,请注意存储桶名称中的大写字母或下划线,因为这也花了我一生的时间(仅限DNS)。