我在使用 Node SDK 从 NodeJS 访问我的全新存储桶(通过 AWS 控制台创建)时遇到了问题。我所做的步骤(如果我遗漏了什么,请帮忙)
- 创建了一个 aws 帐户,现在我拥有了 root 用户
- 为 SDK 创建了新的访问 key
- 转到 S3 并在控制台中创建一个新存储桶
- 在nodejs中,我尝试将一些内容上传到此存储桶,但我不断收到“访问被拒绝”的消息,没有进一步的解释。
我尝试了不同区域的存储桶以及生成新的访问 key ,并尝试为存储桶设置较低的权限,以至于我可以使用其中一个测试存储桶为每个人启用所有内容,但仍然收到错误。
代码位:
class SomeNodeService {
constructor() {
this.s3 = new S3({
params: {
Bucket: 'some.bucket.which.name.is.unique',
accessKeyId: 'SOMEID',
secretAccessKey: 'SOMEID'
}
});
}
uploadAttachment(attachment) {
const _this = this;
return co(function * () {
const file = yield _readFile(attachment.path, 'utf8');
const key = `${KEY_PREFIX}attachment/${Date.now()}/${attachment.name}`;
const params = {
Key: key,
Body: file
};
return yield _this.s3.putObject(params).promise();
});
}
}
我不知道我错过了什么:S
<小时/>根据 @filipebarretto,我创建了一个新用户,并为该用户创建了新的访问 token ,并为他提供了 AmazonS3FullAccess。值得一提的是,我还创建了一个组名称“sysadmin”,并向该组本身提供了 AmazonS3FullAccess 权限,因此将用户分配到该组也会导致向该用户授予该权限。总而言之,我所做的一切
1) 创建新组 sysadm 2) 授予组权限“AmazonS3FullAccess” 3) 创建新用户 XY 并加入组 sysadm 4) 为 XY 用户重新创建访问 token
但我仍然被拒绝访问:/
最佳答案
要配置您的凭据,您可以使用:
AWS.config = new AWS.Config();
AWS.config.accessKeyId = "accessKey";
AWS.config.secretAccessKey = "secretKey";
AWS.config.region = "region";
这不是最好的也不是最安全的方法。欲了解更多信息,请查看:http://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/setting-credentials.html
您应该在参数中定义Bucket和Key,例如:
const params = {
Key: key,
Body: file
};
return yield _this.s3.putObject(params).promise();
在您的构造函数中,仅使用:
constructor() {
this.s3 = new S3();
}
var s3 = new AWS.S3();
引用:http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#putObject-property
关于javascript - Amazon S3 - 从nodejs SDK访问存储桶,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41443427/