Injeção de prefixo de host
nota
Para obter ajuda em compreender o layout das páginas de configurações ou interpretar a tabela Compatibilidade com SDKs e ferramentas da AWS a seguir, consulte Entender as páginas de configurações deste guia.
A injeção de prefixo de host é um atributo em que SDKs da AWS adicionam automaticamente um prefixo ao nome do host dos endpoints de serviço para determinadas operações de API. Esse prefixo pode ser uma string estática ou um valor dinâmico que inclui dados dos parâmetros da solicitação.
Por exemplo, ao usar o Amazon Simple Storage Service para realizar ações em objetos ou buckets do Amazon S3, o SDK substitui o nome do bucket e a da Conta da AWS no endpoint de API final.
Embora esse comportamento seja necessário para endpoints de serviço da AWS normais, ele pode causar problemas ao usar endpoints personalizados, como endpoints da VPC ou ferramentas de teste locais. Nesses casos, pode ser necessário desabilitar a injeção de prefixo de host.
Configure essa funcionalidade usando o seguinte:
disable_host_prefix_injection: configuração de arquivoconfigda AWS compartilhadoAWS_DISABLE_HOST_PREFIX_INJECTION: variável de ambienteaws.disableHostPrefixInjection: propriedade do sistema de JVM: apenas Java/Kotlin-
Essa configuração controla se o SDK ou a ferramenta modificará o nome do host do endpoint colocando um prefixo de host no início, conforme definido no objeto ou na variável de cliente do SDK.
Valor padrão:
falseValores válidos:
-
true: desabilitar injeção de prefixo de host. O SDK não modificará o nome do host do endpoint. -
false: habilitar injeção de prefixo de host. O SDK acrescentará o prefixo de host ao nome do host do endpoint.
-
Exemplo de configuração desse valor no arquivo config:
[default] disable_host_prefix_injection = true
Exemplo de configuração de variáveis de ambiente para Linux/macOS por meio da linha de comando:
export AWS_DISABLE_HOST_PREFIX_INJECTION=true
Exemplo do Windows de configuração de variáveis de ambiente por meio da linha de comando:
setx AWS_DISABLE_HOST_PREFIX_INJECTION true
Exemplos de injeção de prefixo de host
A tabela de exemplos a seguir mostra como os SDKs modificam o endpoint final quando a injeção de prefixo de host está habilitada e desabilitada.
-
Prefixo de host: o modelo da string de caracteres de propriedade de prefixo de host definida no objeto ou na variável de cliente do SDK no código.
-
Entradas: entradas adicionais definidas no objeto ou na variável de cliente do SDK no código.
-
Endpoint do cliente: o endpoint derivado do cliente.
-
Valor da configuração: valor resolvido para a configuração anterior.
-
Endpoint resultante: o endpoint resultante que o cliente do SDK usa para fazer a chamada de API.
| Prefixo do host | Entradas | Endpoint do cliente | Valor da configuração | Endpoint resultante |
|---|---|---|---|---|
| "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" |
Compatibilidade com SDKs e ferramentas da AWS
Os SDKs a seguir são compatíveis com os recursos e configurações descritos neste tópico. Quaisquer exceções parciais estão anotadas. As configurações de propriedade do sistema de JVM são compatíveis apenas como o AWS SDK para Java e o AWS SDK para Kotlin.
| SDK | Compatível | Notas ou mais informações |
|---|---|---|
| AWS CLI v2 da2 | Sim | |
| SDK para C++ | Não | Configuração não compatível, mas pode ser configurada no código do cliente usando: enableHostPrefixInjection |
| SDK para Go V2 (1.x) |
Não | Pode ser desabilitado usando middleware. |
| SDK para Go 1.x (V1) | Não | |
| SDK para Java 2.x | Não | Configuração não compatível, mas pode ser configurada no código do cliente usando: SdkAdvancedClientOption.DISABLE_HOST_PREFIX_INJECTION |
| SDK para Java 1.x | Não | Configuração não compatível, mas pode ser configurada no código do cliente usando: withDisableHostPrefixInjection. |
| SDK para JavaScript 3.x | Não | Configuração não compatível, mas pode ser configurada no código do cliente usando: disableHostPrefix. |
| SDK para JavaScript 2.x | Não | Configuração não compatível, mas pode ser configurada no código do cliente usando: hostPrefixEnabled. |
| SDK para Kotlin | Não | |
| SDK para .NET 4.x | Não | Configuração não compatível, mas pode ser configurada no código do cliente usando: DisableHostPrefixInjection. |
| SDK para .NET 3.x | Não | Configuração não compatível, mas pode ser configurada no código do cliente usando: DisableHostPrefixInjection. |
| SDK para PHP 3.x | Não | Configuração não compatível, mas pode ser configurada no código do cliente usando: disable_host_prefix_injection. |
| SDK para Python (Boto3) |
Sim | Pode ser configurado em código no cliente usando: inject_host_prefix |
| SDK para Ruby 3.x | Não | Configuração não compatível, mas pode ser configurada no código do cliente usando: disable_host_prefix_injection |
| SDK para Rust | Não | |
| SDK para Swift | Não | |
| Ferramentas para PowerShell V5 | Não | A configuração não é compatível, mas pode ser incluída em cmdlets específicos usando o parâmetro -ClientConfig @{DisableHostPrefixInjection = $true}. |
| Ferramentas para PowerShell V4 | Não | A configuração não é compatível, mas pode ser incluída em cmdlets específicos usando o parâmetro -ClientConfig @{DisableHostPrefixInjection = $true}. |