amazon-s3 - AWS S3 的保留参数名称列表
问题描述
似乎 GET 参数location
是 AWS S3 上的保留参数。假设我在 S3 存储桶上有一个资源,可通过 Web 访问:
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 参数的所有保留字的列表?
我搜索了文档,但找不到任何此类列表。
解决方案
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
他们会定期添加新的,例如select
anddelete
和tagging
,因此详尽的列表不是面向未来的。
您最安全的选择是使用以开头的参数x-
(但不以开头,x-amz
因为这些可能被保留或带有其他含义)。日志记录文档中提到了这一点:
您可以通过将自定义查询字符串参数添加到请求的 URL 来包含要存储在请求的访问日志记录中的自定义信息。Amazon S3 忽略以“x-”开头的查询字符串参数,但将这些参数包含在请求的访问日志记录中,作为日志记录的 Request-URI 字段的一部分。
https://docs.aws.amazon.com/AmazonS3/latest/dev/LogFormat.html
推荐阅读
- python - 从一个句子中计算熊猫数据框中每行的不同单词
- service-worker - PWA 作为共享目标不情愿地打开一个新实例
- c++ - 将返回类放置到唯一指针的向量
- python - one-hot 编码的可用类别的一致性
- javascript - 为什么我不能 setAttribute('onclick', function() { ... })?
- javascript - 有什么方法可以仅通过客户端 javascript 连接到 gsheets api?
- c++ - 对象的构造函数和析构函数
- python - 如何从字典中删除一个值?
- xpath - XPath 返回包含字符串值的树中所有唯一元素的列表
- sql - 如何在 SQL 中使用数据透视(不是作为 DataFrame 分组运算符)?