本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
主机前缀注入
注意
如需了解设置页面布局或解释后面的 Support b y Amazon SDKs 和 tools 表格的帮助,请参阅了解本指南的设置页面。
主机前缀注入是一项功能,它 Amazon SDKs 会自动为某些 API 操作在服务端点的主机名前添加前缀。此前缀可以是静态字符串,也可以是包含请求参数中数据的动态值。
例如,在使用 Amazon 简单存储服务对 Amazon S3 对象或存储桶执行操作时,软件开发工具包会在最终的 API 终端节点中替换您的存储桶名称和 Amazon Web Services 账户 ID。
虽然普通 Amazon 服务终端节点需要这种行为,但在使用自定义终端节点(例如 VPC 终端节点或本地测试工具)时,它可能会导致问题。在这些情况下,您可能需要禁用主机前缀注入。
使用以下方法配置此功能:
disable_host_prefix_injection
-共享 Amazonconfig
文件设置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
主机前缀注入示例
下表的示例显示了在启用和禁用主机前缀注入时如何 SDKs 修改最终端点。
-
主机前缀:在 SDK 的客户端对象或代码变量上设置的主机前缀属性字符串的模板。
-
输入:在 SDK 的客户端对象或代码中的变量上设置的其他输入。
-
客户端端点:客户端的派生端点。
-
设置值:先前设置的解析值。
-
生成的端点:生成的 SDK 客户端用于进行 API 调用的端点。
主机前缀 | 输入 | 客户端终端节点 | 设定值 | 生成的端点 |
---|---|---|---|---|
“数据。” | {} | "https://service.us-west-2.amazonaws.com" | false | "https://data.service.us-west-2.amazonaws.com" |
“{Bucket}-{AccountId}。” | Bucket:“amzn-s3-demo-bucket1”,: “123456789012" AccountId | "https://service.us-west-2.amazonaws.com" | false | "https://amzn-s3-demo-bucket1-123456789012.service.us-west-2.amazonaws.com" |
“数据。” | {} | "https://override.us-west-2.amazonaws.com"(作为替代端点) | true | "https://override.us-west-2.amazonaws.com" |
Support Amazon SDKs by 和工具
以下内容 SDKs 支持本主题中描述的功能和设置。所有部分例外情况均已注明。 适用于 Java 的 Amazon SDK 和 适用于 Kotlin 的 Amazon SDK 唯一支持任何 JVM 系统属性设置。