Padrões de configuração inteligente - SDKs e ferramentas da AWS

Padrões de configuração inteligente

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.

Com o atributo de padrões de configuração inteligente, os AWS SDKs podem fornecer valores padrão predefinidos e otimizados para outras configurações.

Configure essa funcionalidade usando o seguinte:

defaults_mode: configuração de arquivo config da AWS compartilhado
AWS_DEFAULTS_MODE: variável de ambiente
aws.defaultsMode: propriedade do sistema de JVM: apenas Java/Kotlin

Com essa configuração, você pode escolher um modo que se alinhe à arquitetura do aplicativo e, em seguida, forneça valores padrão otimizados para o aplicativo. Se uma configuração do AWS SDK tiver um valor definido explicitamente, esse valor sempre terá precedência. Se uma configuração do AWS SDK não tiver um valor definido explicitamente e defaults_mode não for igual ao legado, esse atributo poderá fornecer valores padrão diferentes para várias configurações otimizadas para seu aplicativo. As configurações podem incluir o seguinte: configurações de comunicação HTTP, comportamento de repetição, configurações de endpoint regional do serviço e, potencialmente, qualquer configuração relacionada ao SDK. Os clientes que usam esse atributo podem obter novos padrões de configuração personalizados para cenários de uso comuns. Se seu defaults_mode não for igual a legacy, recomendamos realizar testes de seu aplicativo ao atualizar o SDK, pois os valores padrão fornecidos podem mudar à medida que as melhores práticas evoluem.

Valor padrão: legacy

Observação: as novas versões principais dos SDKs usarão como padrão de standard.

Valores válidos:

  • legacy: fornece configurações padrão que variam de acordo com o SDK e existiam antes do estabelecimento do defaults_mode.

  • standard: fornece os valores padrão recomendados mais recentes que devem ser executados com segurança na maioria dos cenários.

  • in-region: baseia-se no modo padrão e inclui otimização personalizada para aplicativos que chamam os Serviços da AWS de dentro da mesma Região da AWS.

  • cross-region: baseia-se no modo padrão e inclui otimização personalizada para aplicativos que chamam os Serviços da AWS em uma Região diferente.

  • mobile: baseia-se no modo padrão e inclui otimização personalizada para aplicativos móveis.

  • auto: baseia-se no modo padrão e inclui atributos experimentais. O SDK tenta descobrir o ambiente de runtime para determinar automaticamente as configurações apropriadas. A detecção automática é baseada em heurísticas e não fornece 100% de precisão. Se o ambiente de runtime não puder ser determinado, o modo standard será usado. A detecção automática pode consultar os metadados da instância, o que pode introduzir latência. Se a latência de inicialização for fundamental para seu aplicativo, recomendamos escolher um defaults_mode explícito.

Exemplo de configuração desse valor no arquivo config:

[default] defaults_mode = standard

Os parâmetros a seguir podem ser otimizados com base na seleção de defaults_mode:

  • retryMode: especifica como o SDK tenta novas tentativas. Consulte Comportamento de repetição.

  • stsRegionalEndpoints: especifica como o SDK determina o endpoint do AWS service (Serviço da AWS) usado para se comunicar com o AWS Security Token Service (AWS STS). Consulte Endpoints regionais do AWS STS.

  • s3UsEast1RegionalEndpoints: especifica como o SDK determina o endpoint do serviço da AWS usado para se comunicar com o Amazon S3 para a Região us-east-1.

  • connectTimeoutInMillis: depois de fazer uma tentativa inicial de conexão em um soquete, a quantidade de tempo antes do tempo limite. Se o cliente não receber a conclusão do handshake de conexão, ele desiste e falhará na operação.

  • tlsNegotiationTimeoutInMillis: o tempo máximo que um handshake TLS pode levar desde o momento em que a mensagem CLIENT HELLO é enviada até o momento em que o cliente e o servidor negociaram totalmente as cifras e trocaram as chaves.

O valor padrão para cada configuração muda dependendo da defaults_mode selecionada para seu aplicativo. Atualmente, esses valores são definidos da seguinte forma (sujeitos a alterações):

Parameter Modo standard Modo in-region Modo cross-region Modo mobile
retryMode standard standard standard standard
stsRegionalEndpoints regional regional regional regional
s3UsEast1RegionalEndpoints regional regional regional regional
connectTimeoutInMillis 3100 1100 3100 30000
tlsNegotiationTimeoutInMillis 3100 1100 3100 30000

Por exemplo, se o defaults_mode que você selecionou fosse standard, o valor de standard seria atribuído a retry_mode (das opções retry_mode válidas) e o valor de regional seria atribuído a stsRegionalEndpoints (das opções stsRegionalEndpoints válidas).

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 Não
SDK para C++ Sim Parâmetros não otimizados:stsRegionalEndpoints, s3UsEast1RegionalEndpoints, tlsNegotiationTimeoutInMillis.
SDK para Go V2 (1.x) Sim Parâmetros não otimizados:retryMode, stsRegionalEndpoints, s3UsEast1RegionalEndpoints.
SDK para Go 1.x (V1) Não
SDK para Java 2.x Sim Parâmetros não otimizados: stsRegionalEndpoints.
SDK para Java 1.x Não
SDK para JavaScript 3.x Sim Parâmetros não otimizados:stsRegionalEndpoints, s3UsEast1RegionalEndpoints, tlsNegotiationTimeoutInMillis. connectTimeoutInMillis é chamado connectionTimeout.
SDK para JavaScript 2.x Não
SDK para Kotlin Não
SDK para .NET 4.x Sim Parâmetros não otimizados: connectTimeoutInMillis, tlsNegotiationTimeoutInMillis.
SDK para .NET 3.x Sim Parâmetros não otimizados: connectTimeoutInMillis, tlsNegotiationTimeoutInMillis.
SDK para PHP 3.x Sim Parâmetros não otimizados: tlsNegotiationTimeoutInMillis.
SDK para Python (Boto3) Sim Parâmetros não otimizados: tlsNegotiationTimeoutInMillis.
SDK para Ruby 3.x Sim
SDK para Rust Não
SDK para Swift Não
Ferramentas para PowerShell V5 Sim Parâmetros não otimizados: connectTimeoutInMillis, tlsNegotiationTimeoutInMillis.
Ferramentas para PowerShell V4 Sim Parâmetros não otimizados: connectTimeoutInMillis, tlsNegotiationTimeoutInMillis.