我在使用节点SDK从nodejs访问我的全新存储桶(通过aws控制台创建)时遇到了问题。我做的步骤(如果我错过了什么,请帮助)
我尝试使用存储桶的不同区域以及生成新的访问密钥,并尝试为存储桶设置较低的权限,以便为每个人使用其中一个测试存储桶启用所有内容,但仍然会收到错误。< / p>
代码位:
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,我创建了一个新用户,并为该用户创建了新的访问权限,并为他提供了AmazonS3FullAccess。值得一提的是,我还创建了一个群组名称&#39; sysadmin&#39;并且我向组本身提供了AmazonS3FullAccess权限,因此将用户分配给组也导致向用户授予权限。总而言之,我所做的一切
1)创建新组sysadm 2)授予组权限&#34; AmazonS3FullAccess&#34; 3)创建新用户XY并加入组sysadm 4)为XY用户重新创建访问令牌
但我仍然拒绝访问:/
答案 0 :(得分:1)
要配置您的凭据,请使用:
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