主机前缀注入
注意
如需获得相关帮助,以了解设置页面的布局或解释后面的 AWS SDK 和工具支持表,请参阅了解本指南的设置页面。
使用主机前缀注入功能时,AWS SDK 会自动为某些 API 操作在服务端点的主机名前添加前缀。此前缀可以是一个静态字符串,也可以是包含请求参数中数据的动态值。
例如,在使用 Amazon Simple Storage Service 对 Amazon S3 对象或存储桶执行操作时,SDK 会在最终的 API 端点中替换您的存储桶名称和 AWS 账户 ID。
虽然此行为对于正常的 AWS 服务端点为必需,但在使用 VPC 端点等自定义端点或本地测试工具时,这可能会导致问题。对于这些情况,您可能需要禁用主机前缀注入。
使用以下方法配置此功能:
disable_host_prefix_injection- 共享 AWSconfig文件设置AWS_DISABLE_HOST_PREFIX_INJECTION- 环境变量aws.disableHostPrefixInjection:JVM 系统属性,仅适用于 Java/Kotlin-
此设置用于控制 SDK 或工具是否将通过附加在 SDK 的客户端对象或变量中定义的主机前缀来修改端点主机名。
默认值:
false有效值:
-
true:禁用主机前缀注入。SDK 不会修改端点主机名。 -
false:启用主机前缀注入。SDK 将在端点主机名前附加主机前缀。
-
在 config 文件中设置此值的示例:
[default] disable_host_prefix_injection = true
Linux/macOS 通过命令行设置环境变量的示例:
export AWS_DISABLE_HOST_PREFIX_INJECTION=true
Windows 通过命令行设置环境变量的示例:
setx AWS_DISABLE_HOST_PREFIX_INJECTION true
主机前缀注入示例
下面的示例表展示了启用和禁用主机前缀注入后 SDK 将会如何修改最终端点。
-
主机前缀:在 SDK 客户端对象或代码变量上设置的主机前缀属性字符串模板。
-
输入:在 SDK 客户端对象或代码变量上设置的其他输入。
-
客户端端点:客户端的派生端点。
-
设置值:先前设置的解析值。
-
结果端点:SDK 客户端用于执行 API 调用的最终端点。
| 主机前缀 | 输入 | 客户端端点 | 设置值 | 结果端点 |
|---|---|---|---|---|
| "data." | {} | "https://service.us-west-2.amazonaws.com" | false | "https://data.service.us-west-2.amazonaws.com" |
| "{Bucket}-{AccountId}." | Bucket: "amzn-s3-demo-bucket1", AccountId:"123456789012" | "https://service.us-west-2.amazonaws.com" | false | "https://amzn-s3-demo-bucket1-123456789012.service.us-west-2.amazonaws.com" |
| "data." | {} | "https://override.us-west-2.amazonaws.com" (as an override endpoint) | true | "https://override.us-west-2.amazonaws.com" |
AWS SDK 和工具支持
以下 SDK 支持本主题中所述的功能和设置。所有部分例外情况均已注明。任何 JVM 系统属性设置都仅支持 适用于 Java 的 AWS SDK 和 适用于 Kotlin 的 AWS SDK。