

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 主机前缀注入
主机前缀注入

**注意**  
如需了解设置页面布局或解释后面的 Support b **y Amazon SDKs 和 tools** 表格的帮助，请参阅[了解本指南的设置页面](settings-reference.md#settingsPages)。

主机前缀注入是一项功能，它 Amazon SDKs 会自动为某些 API 操作在服务端点的主机名前添加前缀。此前缀可以是一个静态字符串，也可以是包含请求参数中数据的动态值。

例如，在使用 Amazon 简单存储服务对 Amazon S3 对象或存储桶执行操作时，软件开发工具包会在最终的 API 终端节点中替换您的存储桶名称和 Amazon Web Services 账户 ID。

虽然普通 Amazon 服务终端节点需要这种行为，但在使用自定义终端节点（例如 VPC 终端节点或本地测试工具）时，它可能会导致问题。对于这些情况，您可能需要禁用主机前缀注入。

使用以下方法配置此功能：

**`disable_host_prefix_injection`-共享 Amazon `config`文件设置`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 调用的最终端点。


| 主机前缀 | 输入 | 客户端端点 | 设置值 | 结果端点 | 
| --- |--- |--- |--- |--- |
| “数据。” | \$1\$1 | "https://service.us-west-2.amazonaws.com" | false | "https://data.service.us-west-2.amazonaws.com" | 
| “\$1Bucket\$1-\$1AccountId\$1。” | 存储桶：“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" | 
| “数据。” | \$1\$1 | "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 系统属性设置。


| SDK | 支持 | 备注或更多信息 | 
| --- | --- | --- | 
| [Amazon CLI](https://docs.amazonaws.cn/cli/latest/userguide/) v2 | 是 |  | 
| [适用于 C\$1\$1 的 SDK](https://docs.amazonaws.cn/sdk-for-cpp/latest/developer-guide/) | 否 | 不支持设置，但可以通过客户端使用 [https://sdk.amazonaws.com/cpp/api/LATEST/aws-cpp-sdk-core/html/struct_aws_1_1_client_1_1_client_configuration.html](https://sdk.amazonaws.com/cpp/api/LATEST/aws-cpp-sdk-core/html/struct_aws_1_1_client_1_1_client_configuration.html) 在代码中配置。 | 
| [适用于 Go V2 (1.x) 的 SDK](https://docs.amazonaws.cn/sdk-for-go/v2/developer-guide/) | 否 | 可以[使用中间件](https://docs.amazonaws.cn/sdk-for-go/v2/developer-guide/configure-endpoints.html)禁用。 | 
| [适用于 Go 1.x（V1）的 SDK](https://docs.amazonaws.cn/sdk-for-go/latest/developer-guide/) | 否 |  | 
| [适用于 Java 2.x 的 SDK](https://docs.amazonaws.cn/sdk-for-java/latest/developer-guide/) | 否 | 不支持设置，但可以通过客户端使用 [https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/core/client/config/SdkAdvancedClientOption.html#DISABLE_HOST_PREFIX_INJECTION](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/core/client/config/SdkAdvancedClientOption.html#DISABLE_HOST_PREFIX_INJECTION) 在代码中配置。 | 
| [适用于 Java 1.x 的 SDK](https://docs.amazonaws.cn/sdk-for-java/v1/developer-guide/) | 否 | 不支持设置，但可以通过客户端使用 [https://docs.amazonaws.cn/AWSJavaSDK/latest/javadoc/com/amazonaws/ClientConfiguration.html](https://docs.amazonaws.cn/AWSJavaSDK/latest/javadoc/com/amazonaws/ClientConfiguration.html) 在代码中配置。 | 
| [适用于 JavaScript 3.x 的软件开发工具包](https://docs.amazonaws.cn/sdk-for-javascript/latest/developer-guide/) | 否 | 不支持设置，但可以通过客户端使用 [https://docs.amazonaws.cn/AWSJavaScriptSDK/v3/latest/client/s3-control/](https://docs.amazonaws.cn/AWSJavaScriptSDK/v3/latest/client/s3-control/) 在代码中配置。 | 
| [适用于 JavaScript 2.x 的 SDK](https://docs.amazonaws.cn/sdk-for-javascript/v2/developer-guide/) | 否 | 不支持设置，但可以通过客户端使用 [https://docs.amazonaws.cn/AWSJavaScriptSDK/latest/AWS/Config.html](https://docs.amazonaws.cn/AWSJavaScriptSDK/latest/AWS/Config.html) 在代码中配置。 | 
| [适用于 Kotlin 的 SDK](https://docs.amazonaws.cn/sdk-for-kotlin/latest/developer-guide/) | 否 |  | 
| [适用于.NET 4.x 的 SDK](https://docs.amazonaws.cn/sdk-for-net/latest/developer-guide/) | 否 | 不支持设置，但可以通过客户端使用 [https://docs.amazonaws.cn/sdkfornet/v4/apidocs/items/Runtime/TClientConfig.html](https://docs.amazonaws.cn/sdkfornet/v4/apidocs/items/Runtime/TClientConfig.html) 在代码中配置。 | 
| [适用于 .NET 3.x 的 SDK](https://docs.amazonaws.cn/sdk-for-net/v3/developer-guide/) | 否 | 不支持设置，但可以通过客户端使用 [https://docs.amazonaws.cn/sdkfornet/v3/apidocs/items/Runtime/TClientConfig.html](https://docs.amazonaws.cn/sdkfornet/v3/apidocs/items/Runtime/TClientConfig.html) 在代码中配置。 | 
| [适用于 PHP 3.x 的 SDK](https://docs.amazonaws.cn/sdk-for-php/latest/developer-guide/) | 否 | 不支持设置，但可以通过客户端使用 [https://docs.amazonaws.cn/aws-sdk-php/v3/api/class-Aws.AwsClient.html](https://docs.amazonaws.cn/aws-sdk-php/v3/api/class-Aws.AwsClient.html) 在代码中配置。 | 
| [适用于 Python (Boto3) 的 SDK](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html) | 是 | 可以通过客户端使用 [https://botocore.amazonaws.com/v1/documentation/api/latest/reference/config.html](https://botocore.amazonaws.com/v1/documentation/api/latest/reference/config.html) 在代码中配置。 | 
| [适用于 Ruby 3.x 的 SDK](https://docs.amazonaws.cn/sdk-for-ruby/latest/developer-guide/) | 否 | 不支持设置，但可以通过客户端使用 [https://github.com/aws/aws-sdk-ruby/blob/version-3/gems/aws-sdk-core/lib/aws-sdk-core/plugins/endpoint_pattern.rb#L8](https://github.com/aws/aws-sdk-ruby/blob/version-3/gems/aws-sdk-core/lib/aws-sdk-core/plugins/endpoint_pattern.rb#L8) 在代码中配置。 | 
| [适用于 Rust 的 SDK](https://docs.amazonaws.cn/sdk-for-rust/latest/dg/) | 否 |  | 
| [适用于 Swift 的 SDK](https://docs.amazonaws.cn/sdk-for-swift/latest/developer-guide/) | 否 |  | 
| [适用于 PowerShell V5 的工具](https://docs.amazonaws.cn/powershell/latest/userguide/) | 否 | 不支持设置，但可以使用参数 -ClientConfig @\$1DisableHostPrefixInjection = \$1true\$1 将其包含在特定的 cmdlet 中。 | 
| [适用于 PowerShell V4 的工具](https://docs.amazonaws.cn/powershell/v4/userguide/) | 否 | 不支持设置，但可以使用参数 -ClientConfig @\$1DisableHostPrefixInjection = \$1true\$1 将其包含在特定的 cmdlet 中。 | 