javascript - 使用 Javascript SDK 从 AWS s3 存储桶获取对象 : "missing credential" error

标签 javascript amazon-web-services amazon-s3

我正在使用 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 请求,例如使用 fetchXMLHttpRequest如果使用浏览器。

关于javascript - 使用 Javascript SDK 从 AWS s3 存储桶获取对象 : "missing credential" error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46064222/

相关文章:

javascript - 如何停止在页面重新加载时从 jQuery 函数中删除附加类

java - AWS SWF : Get worker identity in workflow implementation

php - 从 Codeigniter 上传到 S3 存储桶

javascript - 从玩家向鼠标发射子弹?

javascript - 如何过滤 native react 中的对象数组?

mongodb - 如何向我的开发人员授予服务器访问权限?

amazon-web-services - WebServerHost 该用户没有默认 VPC

static - Nginx image_filter

java - 使用适用于 Java 2.0 的 AWS 开发工具包预签名对象 URL

javascript - jQuery Datepicker 的优先级低于表单上的其他控件