2017-06-18 67 views
1

在我的nodejs項目中,我使用aws-sdk從我的s3存儲桶下載所有圖像,但是我得到了這個錯誤 - NoSuchKey:指定的鍵不存在。但鍵是正確的,我可以用這些鍵上傳圖像。aws-sdk:NoSuchKey:指定的鍵不存在?

我的代碼是:

var AWS = require('aws-sdk'); 
    s3 = new AWS.S3(); 
    var params = { 
     Bucket: config.get("aws.s3.bucket"), 
     Key: config.get("aws.credentials.secretAccessKey") 
    }; 
    s3.getObject(params, function (err, data) { 
     console.log("data"); 
     if (err) console.log(err, err.stack); // an error occurred 
     else console.log(data); 
    }); 
} 

誰能告訴我哪裏做錯了嗎?

回答

0

您可能需要sudo才能讀取密鑰。

+0

謝謝@ mikep,我該怎麼做?你能具體嗎? –

+0

在linux shell中,請執行sudo 。系統會提示您輸入密碼。 – mikep

+0

但我在我的項目中這樣做,那麼它將如何工作? –

2

有涉及到如何使用AWS-SDK的問題,它應該是爲下面的例子:

var aws = require('aws-sdk'); 
aws.config.update({ 
    accessKeyId: {{AWS_ACCESS_KEY}}, 
    secretAccessKey: {{AWS_SECRET_KEY}} 
}); 
var s3 = new aws.S3(); 
var s3Params = { 
    Bucket: {{bucket name}}, 
    Key: {{path to dedicated S3 Object (folder name + file/object 
    name)}} 
}; 
s3.getObject(s3Params, function (err, data) { 
    //Continue handling the returned results. 
}); 

替換裏面的字符串{{}}用正確的數據,它應該很好地工作。

+0

它會出現OP的誤解是什麼[「關鍵」在S3](https://docs.aws.amazon.com/AmazonS3/latest/開發/ UsingObjects.html)。你的代碼示例是正確的。儘管理想情況下,應該使用[角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html),而不是硬編碼訪問密鑰/祕密。 [配置本地環境](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html)。雖然所有超出了OP的問題範圍:) – cameck

+0

這是超出了這個問題的範圍,但你是對的,你解釋我實際上用我的代碼:) –

+0

正確的,我沒有注意到這一點。我添加了OP的好處的鏈接,而不是你的:) – cameck