0

我有一个由 2 个应用程序AB组成的分布式系统。

B 调用 A 的特定 API,在此期间执行底层工作流,文件 a 生成并上传到S3. A在上传之前对文件进行客户端加密。对B的API响应是上传文件的bucket+link位置。

现在在稍后的时间点,B希望从 S3 下载文件。

有两种方法可以做到这一点 -

  1. 在B端实现下载功能,在这种情况下,它需要知道A用来上传的 AWS 密钥。
  2. A向B公开一个download功能,这样B就不需要知道A用来上传的 AWS 密钥。



选项 2 似乎是做事的正确方法。
我的理解是正确的还是有第三种更合理的方法?

4

1 回答 1

0

您可能希望考虑使用查询字符串身份验证的“中途之家”。本质上,当 B 想要下载文件时,它会向 A 发出请求,要求提供下载链接。然后 A 生成一个限时的预签名请求 URL,然后 B 可以使用该 URL 直接从 S3 下载文件。

当您将问题标记为“java”时,我假设您使用的是 AWS Java SDK,在这种情况下,您需要的方法generatePresignedUrlAmazonS3Client

于 2012-08-08T15:46:05.233 回答