2017-09-25 314 views
0

我在aws和IAM用户上创建了一个存储桶,然后为用户设置了访问权限。如何使用IAM访问AWS S3上的存储桶 - 使用Node.js(aws-sdk)?

现在我卡住了,因为我不知道如何使用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(); 
    } 
}); 

什么我现在已经是错误“缺少必要的关键‘钥匙’在PARAMS” 45000(! )错误使用相同的文本“错误:在参数(...)中找到意外的键'N'”其中N是错误的数量。

回答

3

这似乎与IAM根本没有关系。您没有将Key参数传递给S3 put操作。我相信你应该通过fileDataputObject,而不是data。像这样:

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

谢谢,让我试试看。 – mimic

+0

OMG它的工作,我很愚蠢:( – mimic

相关问题