【问题标题】:Amazon S3 signed urls accessible from outside world可从外部世界访问的 Amazon S3 签名 URL
【发布时间】:2023-01-17 23:58:02
【问题描述】:

所以我们有一个用例,我们需要能够从互联网上的外部世界下载 S3 文件。为此,我们正在创建 s3 pre signed url,如下所示。我的疑问是我们如何在互联网上访问它?默认情况下这些 url 是否可以在 Internet 上访问。或者我们是否需要创建一个代理。

https://<bucket-name>.s3.amazonaws.com/<filename><some other parameters>

【问题讨论】:

标签: java amazon-web-services amazon-s3 pre-signed-url


【解决方案1】:

您显示的 URL 不是预签名 URL。预签名 URL 如下所示:

https://bucketxxxxxx.s3.amazonaws.com/note.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20230117T153509Z&X-Amz-SignedHeaders=host&X-Amz-Expires=3599&X-Amz-Credential=AKIA33JWY3BX2TYWxxxxxxxxxxx%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Signature=e55142af548e46fc2870bb03331d0e9aa9ffbd21xxxxxxxxxxxxxxxxxx

一旦生成有效的预签名 URL,就不需要代理。用户可以在给定的时间窗口内下载对象 - 您在创建时定义GetObjectPresignRequest.

GetObjectPresignRequest getObjectPresignRequest = GetObjectPresignRequest.builder()
                   .signatureDuration(Duration.ofMinutes(60))
                   .getObjectRequest(getObjectRequest)
                   .build();

您可以在AWS 代码 Github这里:

https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javav2/example_code/s3/src/main/java/com/example/s3/GetObjectPresignedUrl.java

要阅读有关使用适用于 Java v2 的 AWS 开发工具包创建它们的更多信息,请参阅AWS Java V2 开发人员指南.

Working with Amazon S3 presigned URLs

【讨论】:

  • 谢谢。是的,这就是我所说的预签名网址。那么这些 url 可以在互联网上访问吗?
  • 是:“您可以使用 S3Presigner 对象对 Amazon S3 SdkRequest 进行签名,这样它就可以在不需要调用方身份验证的情况下执行。例如,假设 Alice 可以访问 S3 对象,并且她想暂时共享对该对象的访问权限与 Bob 的对象。Alice 可以生成一个预先签名的 GetObjectRequest 对象来安全地与 Bob 共享,这样他就可以下载该对象而无需访问 Alice 的凭据。”
  • 文档的解释
猜你喜欢
  • 1970-01-01
  • 2015-05-21
  • 1970-01-01
  • 2018-12-27
  • 1970-01-01
  • 2013-05-25
  • 2021-10-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多