繁体   English   中英

Amazon S3-从Node.js SDK访问存储桶

[英]Amazon S3 - accessing bucket from nodejs SDK

使用node SDK从nodejs访问我的全新存储桶(通过aws控制台创建)时遇到了问题。 我所做的步骤(如果我错过了一些事情,请提供帮助)

  • 创建了一个aws帐户,所以我现在有一个root用户
  • 为SDK创建了新的访问密钥
  • 转到S3并在控制台后面创建了一个新存储桶
  • 在nodejs中,我尝试将某些内容上传到此存储桶,但我一直在“访问被拒绝”,但没有进一步的解释。

我使用存储桶尝试了不同的区域,并生成了新的访问密钥,还尝试为存储桶设置了较低的权限,以至于我可以使用其中一个测试存储桶为所有人启用所有功能,但仍然出现错误。

代码位:

    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。 值得一提的是,我还创建了一个组名“ sysadmin”,并且向该组本身提供了AmazonS3FullAccess权限,因此将用户分配给该组也会导致向该用户授予该权限。 所以我所做的一切

1)创建新组sysadm 2)授予组权限“ AmazonS3FullAccess” 3)创建新用户XY并加入组sysadm 4)重新创建XY用户的访问令牌

但是我仍然会拒绝访问:/

要配置您的凭据,请使用:

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

您应该在参数中定义存储桶和密钥,例如:

const params = {
    Key: key,
    Body: file
};

return yield _this.s3.putObject(params).promise();

在构造函数上,仅使用:

constructor() {
    this.s3 = new S3();
}

var s3 =新的AWS.S3();

参考: http : //docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#putObject-property

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM