我们如何使用预先签名的网址限制多次上传

问题描述 投票:0回答:1

我正在编写一个 cdk 应用程序来生成上传预签名 url。

我希望客户端使用预签名 URL 进行一次上传。上传完成后,该 url 必须失效。 我确实在预签名网址中设置了到期时间,但这并不能保证上传一次。

enter image description here

我确实参考了一些帖子,有两个建议。

  1. 上传文件后,让 Lambda 将文件移动到 /uploads/image 到 /received/image 或类似的位置。 (对我来说不是首选解决方案)
  2. 通过 Lambda 使访问密钥失效,预签名的 url 将失效。
  3. 使用参数存储中的临时凭证。

有人可以用cdk代码解释一下解决方案2或3是如何工作的吗?

amazon-s3 aws-lambda aws-cdk pre-signed-url
1个回答
0
投票

没有默认机制允许这样做。预签名 URL 按日期时间管理过期时间。您必须使用带有 Lambda 函数的自定义解决方案来管理预签名 url 的生命周期。

您已经了解了我们可以实现这一目标的几种不同方法,您可以考虑使用 2 种方法:

  • 创建生成预签名 URL 的 Lambda 函数
  • 将其存储在 DynamoDB 中
  • 另一个 Lambda 函数,在上传完成后使 URL 失效

所以你的 CDK 将包括(我不会给出所有详细代码,你应该能够轻松地使用 cdk 模块创建它们。 您可以参考这里的一些文档https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_lambda-readme.html

  • 生成预签名 URL 并将其存储在 DynamoDB 中的 Lambda 函数(请记住,Lambda 函数应具有对 DynamoDB 表的读/写权限 + 为 S3 存储桶生成预签名 URL)
  • 另一个 Lambda 函数,在上传完成后使预签名 URL 失效(Lambda 还应该具有对 DynamoDB 表的读/写权限)
  • 并创建一个 S3 通知以触发对象创建时的无效函数
© www.soinside.com 2019 - 2024. All rights reserved.