amazon-s3 - 如何使用 mongoDB Stitch 获取 AWS S3 签名 URL?

标签 amazon-s3 mongodb-stitch

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

我正在使用 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 时,我可以看到所有文件信息,但我尝试访问该文件,因为它是私有(private)文件,但收到错误消息,指出我无权访问它。

我是否需要再次调用才能获取签名网址,还是可以一次获取所有内容?

最佳答案

所以你有几个选择。

  1. 如果您要公开展示图像,则只需在亚马逊上公开它们即可。如果您在亚马逊上关闭这些图像的权限中的列表选项,那么人们将需要确切的网址才能查看它,这样互联网上的随机人就不会浏览您的照片。因此,除非它实际上是敏感数据,否则此选项可能没问题。

  2. 您可以将 GetObject 方法与 Stitch sdk 结合使用。这将为您返回图像的 Base64 版本。然后您可以将其转换为图像或将 base64 直接嵌入到 src 中的<img> html 中的标记看起来像

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

  • 您可以使用您的 AccessKeyId 和 Signature 作为查询参数来签署 GET 请求。这个link将向您展示如何创建签名。
  • 关于amazon-s3 - 如何使用 mongoDB Stitch 获取 AWS S3 签名 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52995729/

    相关文章:

    amazon-web-services - 如果 EMR 中的总集群资源内存小于从 AWS S3 读取的数据集,Spark 如何读取和处理 AWS EMR 中的数据

    reactjs - 如何在 Next.js 中使用 MongoDB Stitch

    javascript - S3 预签名 URL 文件上传 – NodeJS + 客户端

    php - 在 Linux 服务器上创建 S3Client 失败

    mongodb-stitch - 我们如何跳过mongodb stitch中的记录?

    jwt - 如何从 AWS Cognito JWT 中获取元数据以将其用于 MongoDB Stitch 元数据字段?

    javascript - MongoDB Stitch 引发非用户错误

    javascript - MongoDB Stitch Functions 是否支持异步/等待定义?

    jquery - 使用 Meteor、jQuery 和 AWS SDK 将浏览器直接上传到 S3

    amazon-s3 - 将 foobar.com 和 www.foobar.com 设置为指向我的 Amazon S3 托管站点