使用Javascript SDK从AWS s3存储桶获取getObject:"缺少凭据"错误

时间:2017-09-05 22:33:35

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

我使用的是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,他们没有设置任何类型的配置对象。

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

1 个答案:

答案 0 :(得分:0)

Javascript AWS SDK包装了S3 REST API,which requires authentication on GetObject (see the note)。如果您不想提供身份验证(请注意,您可以创建仅具有GetObject权限的AMI角色),您可以发出正常的网络请求,例如使用fetchXMLHttpRequest浏览器。