【问题标题】:How to access bucket on AWS S3 using IAM - with Node.js (aws-sdk)?如何使用 IAM 访问 AWS S3 上的存储桶 - 使用 Node.js (aws-sdk)?
【发布时间】:2018-03-06 19:36:26
【问题描述】:

我在 aws 和 IAM 用户上创建了一个存储桶,然后为该用户设置了访问权限。

现在我卡住了,因为我不知道如何使用 aws-sdk 上传图片。我找不到任何示例(我找到的所有示例都使用密钥和密钥,而不是 IAM)。

请给我一个工作示例或修复我的明显不工作的代码:

var awsFileName = entityType.awsFolder + entityId + '/' + fileName; //get filename like /folder1/folder2/filename

aws.config.update({
    region: 'ca-central-1',
    accessKeyId: awsKey // like 'ADXZJMPSVCU3KOAXGJJL'
  });
var s3 = new aws.S3();

var s3Bucket = new aws.S3( { params: {Bucket: 'testbucket'} } );
var awsFileData = {Key: awsFileName, Body: data};
s3Bucket.putObject(data, function(err, data){
  if (!err) 
    { 
        callbackOk(fileName, awsFileName);
        console.log('succesfully uploaded the image!');
    } else {
        console.log('Error uploading data: ', data); 
        callbackFail();
    }
});

我现在的错误是“参数中缺少必需的键‘键’” 和 45,000 (!!!) 具有相同文本“错误:在 params(...) 中找到意外的键 'N'”的错误,其中 N 是错误数。

【问题讨论】:

    标签: node.js amazon-web-services amazon-s3 aws-sdk


    【解决方案1】:

    这似乎与 IAM 完全无关。您没有将 Key 参数传递给 S3 put 操作。我相信您应该将fileData 传递给putObject,而不是data。像这样:

    var awsFileData = {Key: awsFileName, Body: data};
    s3Bucket.putObject(awsFileData, function(err, data){
    

    【讨论】:

    • 谢谢,我试试看。
    猜你喜欢
    • 1970-01-01
    • 2012-02-14
    • 2012-10-03
    • 1970-01-01
    • 2015-07-06
    • 2019-07-14
    • 1970-01-01
    • 1970-01-01
    • 2018-08-29
    相关资源
    最近更新 更多