我使用的是Javascript AWS SDK。我把它包括在内:
我想要做的就是已经存储在s3存储桶中的GET对象。
客户端代码可以访问存储在s3上的对象的(工作)URL。它看起来像这样:
https://s3.amazonaws.com/my-bucket-name/my-object-key
我的客户端应用目前有一堆这些网址。我通过模拟这些网址链接的点击来成功下载文件。
我想要做的是在我的脚本中将所有文件放在一起,这样我就可以使用JSzip将它们捆绑到一个包含漂亮文件夹结构的zip文件中。
我尝试执行以下操作(这包括我的代码库中所有与s3相关的代码):
var bucketName = 'my-bucket-name';
var s3 = new AWS.S3( {
params: {
Bucket: bucketName
}
} );
var key = myFileUrl.split('my-bucket-name/')[1];
var params = {
Key: key
};
s3.getObject(params, function(err, data) {
if (err) console.log("error!" + err + err.stack); // an error occurred
else {
console.log("success getting file from S3:",data); // successful response
}
});
当我运行这个时,我得到了一个" CredentialsError:在配置中缺少凭据"错误。
我实际上不需要任何凭据,对吧?该文件是公共的,我可以通过链接获取它。我查看了AWS文档以使用Javascript(客户端)sdk,他们没有设置任何类型的配置对象。
有没有人让这个工作?我做错了什么?
答案 0 :(得分:0)
Javascript AWS SDK包装了S3 REST API,which requires authentication on GetObject (see the note)。如果您不想提供身份验证(请注意,您可以创建仅具有GetObject权限的AMI角色),您可以发出正常的网络请求,例如使用fetch或XMLHttpRequest浏览器。