【发布时间】:2021-06-05 19:19:23
【问题描述】:
在我的应用中,用户可以将图像上传到他们在 S3 存储桶中的文件夹中。当前与从 S3 上传和检索图像相关的请求通过 API Gateway 处理,用户通过 Cognito 进行身份验证。
有没有一种方法可以列出存储桶文件夹中的所有对象并能够显示所有图像?
我问的问题与this one 相同,只是我只希望经过身份验证的用户能够访问它。
有没有办法通过 Lambda 函数检索它们?
任何帮助表示赞赏。
更新
我已尝试实现 S3 的 listObjectsV2 函数,该函数不会返回每个对象的辞职 URL。有没有办法做到这一点?
函数响应:
{
"IsTruncated": false,
"Contents": [
{
"Key": "username/image/Screenshot 2021-02-22 at 13.24.55.png",
"LastModified": "2021-03-07T19:43:05.000Z",
"ETag",
"Size": 22436,
"StorageClass": "STANDARD"
}
],
"Name": "user-images",
"Prefix": "username/",
"MaxKeys": 1000,
"CommonPrefixes": [],
"KeyCount": 1
}
【问题讨论】:
-
如果您的用户只能安全地上传到他们的个人文件夹,那么您一定已经解决了身份验证和授权问题,不是吗?
-
是的,这是微不足道的可能,取决于语言:stackoverflow.com/questions/42394429/…alexwlchan.net/2017/07/listing-s3-keys 等等。关于这个有成千上万的问题。
-
@jarmod 是的,但我希望能够在后端调用像
listObjects这样可以返回链接以查看图像的函数。 -
@luk2302 感谢您的回复,在我的情况下,列出密钥不足以显示每张照片的预览,因为每张照片都受到 Cognito Auth 的保护......否则我'我在这里失明,但这就是我的理解
-
通常 S3 对象是不公开的,您的后端会获取对象列表,然后为每个对象生成临时的预签名 URL,以便前端可以检索它们。
标签: amazon-web-services amazon-s3 aws-lambda aws-api-gateway photo