如何通过mongoDB Stitch获取AWS S3签名的URL?

时间:2018-10-25 18:19:29

标签: amazon-s3 mongodb-stitch

我正在尝试从S3存储桶中检索一些文件,但是文件设置为私有。我目前正在使用 ListObjects 来检索存储桶中的所有文件,但是在结果集中,该文件不包含签名的url,并且由于该文件是私有文件,因此无法在我的网站上显示该文件。

我正在使用mongoDB Stitch连接到我的S3存储桶。

这是我的代码,可检索存储桶中的所有文件。

const aws = this.client.getServiceClient(AwsServiceClient.factory, "TESTAPP");
const args = {
   Bucket: bucketName,
   Prefix: folderName
};

const request = new AwsRequest.Builder()
   .withService('s3')
   .withAction('ListObjects')
   .withArgs(args);

aws.execute(request.build())
    .then(result => {
        console.log(result);
    }

当我查看console.log时,我可以看到所有文件信息,但是由于它是私有文件,因此我尝试访问该文件,但我收到一条错误消息,说我无权访问该文件。

我是否需要再次拨打电话以获得签名的URL,还是可以一次全部获取?

1 个答案:

答案 0 :(得分:1)

所以您有一些选择。

  1. 如果要公开显示图像,则只需在亚马逊上将其公开即可。如果您在Amazon的权限中关闭了这些图像的列表选项,那么人们将需要确切的URL来查看它,所以这不像互联网上的随机人会浏览您的照片。因此,除非它实际上是敏感数据,否则此选项可能会很好。

  2. 您可以将GetObject方法与Stitch sdk一起使用。这将为您提供映像的base64版本。然后,您可以将其转换为图像,也可以将base64直接嵌入html中src标签的<img>中,看起来像

<img src="data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAAUA
    AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO
    9TXL0Y4OHwAAAABJRU5ErkJggg==" />

  1. 您可以使用AccessKeyId和Signature作为查询参数来签名GET请求。 link将向您展示如何创建签名。