如何使用 mongoDB Stitch 对 AWS S3 进行签名 URL?
How to get AWS S3 signed URL with 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 还是可以一次获得全部?
所以你有几个选择。
如果您 public 只展示图片,那么只需在亚马逊上制作它们 public。如果您在亚马逊上为这些图片关闭列表选项,那么人们将需要确切的 url 才能查看它,这样互联网上的随机用户就不会浏览您的照片。因此,除非它实际上是敏感数据,否则此选项可能没问题。
您可以在 Stitch sdk 中使用 GetObject 方法。这将为您返回图像的 base64 版本。然后,您可以将其转换为图像或将 base64 直接嵌入到 html 中 <img>
标记的 src
中,看起来像
<img src="data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAAUA
AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO
9TXL0Y4OHwAAAABJRU5ErkJggg==" />
- 您可以使用您的 AccessKeyId 和 Signature 作为查询参数来签署 GET 请求。 link 将向您展示如何创建签名。
我正在尝试从 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 还是可以一次获得全部?
所以你有几个选择。
如果您 public 只展示图片,那么只需在亚马逊上制作它们 public。如果您在亚马逊上为这些图片关闭列表选项,那么人们将需要确切的 url 才能查看它,这样互联网上的随机用户就不会浏览您的照片。因此,除非它实际上是敏感数据,否则此选项可能没问题。
您可以在 Stitch sdk 中使用 GetObject 方法。这将为您返回图像的 base64 版本。然后,您可以将其转换为图像或将 base64 直接嵌入到 html 中
<img>
标记的src
中,看起来像
<img src="data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAAUA
AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO
9TXL0Y4OHwAAAABJRU5ErkJggg==" />
- 您可以使用您的 AccessKeyId 和 Signature 作为查询参数来签署 GET 请求。 link 将向您展示如何创建签名。