关于亚马逊网络服务:使用 AWS 开发工具包生成 S3 对象的预签名 URL 是否需要任何费用?

Does generating a pre-signed URL to an S3 object using the AWS SDK cost anything?

使用任何语言的 AWS 开发工具包,您可以为 PRIVATE S3 对象生成一个预签名的 URL,然后任何拥有该 URL 的人都可以使用它下载该对象。这在这里解释:

https://docs.aws.amazon.com/AmazonS3/latest/dev/ShareObjectPreSignedURL.html

这是减少您自己的服务器负载的好方法。如果您的客户遵循重定向,您可以将实际下载工作传递给 S3。我的问题是,实际上生成该 URL 是否需要任何费用——我的意思是实际的金钱。我知道使用 URL 会产生 GET 请求费用,但实际生成 URL 呢?它是否等同于 S3 GET 请求(每 1000 个请求 0.0004 美元)或 PUT 请求(每 1000 个请求 0.005 美元),或者两者都或两者都不是或其他?我似乎找不到任何文档。如果您谈论的是数以千万计的请求,这一点很重要。


不,它不需要任何费用。生成预签名 URL 是纯粹的客户端操作。没有与此相关的 AWS 成本,也没有网络活动。您使用的 SDK 采用您当前的凭证、对象的存储桶和密钥、您选择的方法(例如 GET)、到期时间、可选的 HTTP 标头以及计算和签署 URL,所有这些都在本地完成。

值得注意的是,您可以创建一个实际上不可用的预签名 URL。例如,如果您使用无效或过期的凭据。或者不存在的存储桶或对象键。在这两种情况下,您都可以创建预签名 URL,但当 URL 最终呈现给 S3 时,访问将被拒绝。

您可以使用任何开发工具包或 AWSCLI 通过离线然后预签名 URL 来验证这一点。以下是使用 AWSCLI 的示例:

1
aws s3 presign s3://situla/canes/fido.png

这将在您的计算机离线时成功,就像在线时一样。