如何使用IAM访问AWS S3上的存储桶 - 使用Node.js(aws-sdk)?

时间:2017-09-25 18:27:48

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

我在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是错误数。

1 个答案:

答案 0 :(得分:3)

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

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