【问题标题】:List of reserved parameter names for AWS S3AWS S3 的保留参数名称列表
【发布时间】:2026-01-16 00:10:02
【问题描述】:

似乎GET参数location是AWS S3上的保留参数。假设我在 S3 存储桶上有一个资源,可通过网络访问:

http://my-bucket.s3.amazonaws.com/index.html

...我只是将 GET 参数 location 附加到它,我得到一个 HTTP 403:

http://my-bucket.s3.amazonaws.com/index.html?location=US

只要我将参数名称更改为其他名称,它就可以工作。例如:

http://my-bucket.s3.amazonaws.com/index.html?loc=US

很明显location 是 AWS S3 中的保留字。我的问题是:是否有我不应该尝试将其用作 S3 的 GET 参数的所有保留字的列表?

我搜索了文档,但找不到任何此类列表。

【问题讨论】:

    标签: amazon-s3


    【解决方案1】:

    location 在查询中告诉 S3 您正在询问存储桶的位置。它是 S3 中通过查询字符串参数访问的几个“子资源”(不是对象的东西)之一。

    您可以通过查看整个 API 参考文档来编译一个几乎完整的列表,但这里是一些旧文档(签名版本 2)中的部分列表:

    在构建 CanonicalizedResource 元素时必须包含的子资源有 acl、生命周期、位置、日志记录、通知、partNumber、策略、requestPayment、torrent、uploadId、uploads、versionId、versioning、versions 和 website。

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

    他们会定期添加新的,例如 selectdeletetagging,所以一个详尽的列表并不适合未来。

    您最安全的选择是使用以x- 开头的参数(但不要以x-amz 开头,因为这些参数可能被保留或带有其他含义)。这在日志记录文档中有所提及:

    您可以通过将自定义查询字符串参数添加到请求的 URL 来包含要存储在请求的访问日志记录中的自定义信息。 Amazon S3 会忽略以“x-”开头的查询字符串参数,但会将这些参数包含在请求的访问日志记录中,作为日志记录的 Request-URI 字段的一部分。

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

    【讨论】:

      最近更新 更多