【问题标题】:getObject from AWS s3 bucket using Javascript SDK: "missing credential" error使用 Javascript SDK 从 AWS s3 存储桶获取对象:“缺少凭据”错误
【发布时间】:2017-09-06 07:59:38
【问题描述】:

我正在使用 Javascript AWS 开发工具包。我把它包括在内:

我要做的就是获取已经存储在 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: Missing credentials in config”错误。

我实际上不应该为此需要任何凭据,对吧?该文件是公开的,我可以通过点击链接获取它。我查看了使用 Javascript(客户端)sdk 的 AWS 文档,他们没有设置任何类型的配置对象。

有人让这个工作吗?我做错了什么?

【问题讨论】:

  • 我的脚本标签已被删除。我在我的 stl 中包含 SDK 和这个文件:sdk.amazonaws.com/js/aws-sdk-2.100.0.min.js

标签: javascript amazon-web-services amazon-s3


【解决方案1】:

Javascript AWS SDK 封装了 S3 REST API,which requires authentication on GetObject (see the note)。如果您不想提供身份验证(请注意,您可以创建一个只有 GetObject 权限的 AMI 角色),您可以发出一个普通的 Web 请求,例如使用浏览器时使用 fetchXMLHttpRequest

【讨论】:

  • 嗯。为什么我没有想到只做一个ajax请求?谢谢。
  • 创建具有 getObject 权限的 IAM 角色的问题是 Google 拒绝您的应用程序,声称您已经公开了 AWS 凭证,因此您被卡住了:/
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-02
  • 2017-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-14
  • 2020-10-18
相关资源
最近更新 更多