我正在使用 Javascript AWS SDK。我把它包括在内:
我想做的就是获取已经存储在 s3 存储桶中的对象。
客户端代码可以访问 s3 上存储的对象的(工作)URL。它看起来像这样:
https://s3.amazonaws.com/my-bucket-name/my-object-key
我的客户端应用程序当前有很多这样的 URL。我通过模拟点击这些 URL 的链接成功下载了文件。
我想做的是将所有文件放在我的脚本中,以便我可以使用 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:配置中缺少凭据”错误。
我实际上不需要任何凭据,对吗?该文件是公开的,我只需通过链接即可获取它。我查看了有关使用 Javascript(客户端)sdk 的 AWS 文档,他们没有设置任何类型的配置对象。
有人让它工作吗?我做错了什么?
最佳答案
Javascript AWS SDK 封装了 S3 REST API,which requires authentication on GetObject (see the note) 。如果您不想提供身份验证(请注意,您可以创建仅具有 GetObject 权限的 AMI Angular 色),您可以仅发出普通的 Web 请求,例如使用 fetch或XMLHttpRequest如果使用浏览器。
关于javascript - 使用 Javascript SDK 从 AWS s3 存储桶获取对象 : "missing credential" error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46064222/