Injeção de prefixo de host - SDKs e ferramentas da AWS

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 arquivo config da AWS compartilhado
AWS_DISABLE_HOST_PREFIX_INJECTION: variável de ambiente
aws.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: false

Valores 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}.