2017-09-25 404 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

相關問題