Configurando o AWS SDK para clientes de serviços C++ em código - AWS SDK para C++

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Configurando o AWS SDK para clientes de serviços C++ em código

Quando a configuração é tratada diretamente no código, o escopo da configuração é limitado ao aplicativo que usa esse código. Dentro desse aplicativo, há opções para a configuração global de todos os clientes de serviço, a configuração para todos os clientes de um determinado AWS service (Serviço da AWS) tipo ou a configuração para uma instância específica do cliente de serviço.

AWS SDK para C++ Isso inclui classes de AWS service (Serviço da AWS) cliente que fornecem funcionalidade para interagir com as Serviços da AWS que você usa em seu aplicativo. No SDK para C++, você pode alterar a configuração padrão do cliente, o que é útil quando você quer fazer coisas como:

  • Conectar-se à Internet por meio de proxy

  • Alterar configurações de transporte HTTP, como tempo limite da conexão e novas tentativas de requisição

  • Especificar dicas de tamanho do buffer de soquete TCP

ClientConfigurationé uma estrutura no SDK para C++ que você pode instanciar e utilizar em seu código. O trecho a seguir ilustra o uso dessa classe para acessar o Amazon S3 por meio de um proxy.

Aws::Client::ClientConfiguration clientConfig; clientConfig.proxyHost = "localhost"; clientConfig.proxyPort = 1234; clientConfig.proxyScheme = Aws::Http::Scheme::HTTPS; Aws::S3::S3Client(clientConfig);

Declarações de variáveis de configuração

A ClientConfiguration estrutura declara as seguintes variáveis de membro:

Aws::String accountId; Aws::String accountIdEndpointMode = "preferred"; bool allowSystemProxy = false; Aws::String appId; Aws::String caPath; Aws::String caFile; struct { RequestChecksumCalculation requestChecksumCalculation = RequestChecksumCalculation::WHEN_SUPPORTED; ResponseChecksumValidation responseChecksumValidation = ResponseChecksumValidation::WHEN_SUPPORTED; } checksumConfig; ProviderFactories configFactories = ProviderFactories::defaultFactories; long connectTimeoutMs = 1000; struct CredentialProviderConfiguration { Aws::String profile; Aws::String region; struct { long metadataServiceNumAttempts = 1; long metadataServiceTimeout = 1; std::shared_ptr<RetryStrategy> imdsRetryStrategy; bool disableImdsV1; bool disableImds; } imdsConfig; struct STSCredentialsCredentialProviderConfiguration { Aws::String roleArn; Aws::String sessionName; Aws::String tokenFilePath; std::chrono::milliseconds retrieveCredentialsFutureTimeout = std::chrono::seconds(10); } stsCredentialsProviderConfig; } credentialProviderConfig; bool disableExpectHeader = false; bool disableIMDS = false; bool disableImdsV1 = false; bool enableClockSkewAdjustment = true; Aws::Crt::Optional<bool> enableEndpointDiscovery; bool enableHostPrefixInjection = true; bool enableHttpClientTrace = false; bool enableTcpKeepAlive = true; Aws::String endpointOverride; std::shared_ptr<Aws::Utils::Threading::Executor> executor = nullptr; FollowRedirectsPolicy followRedirects; Aws::Http::TransferLibType httpLibOverride; Aws::Http::TransferLibPerformanceMode httpLibPerfMode = Http::TransferLibPerformanceMode::LOW_LATENCY; long httpRequestTimeoutMs = 0; unsigned long lowSpeedLimit = 1; unsigned maxConnections = 25; Aws::Utils::Array<Aws::String> nonProxyHosts; Aws::String profileName; Aws::String proxyCaFile; Aws::String proxyCaPath; Aws::Http::Scheme proxyScheme; Aws::String proxyHost; unsigned proxyPort = 0; Aws::String proxyUserName; Aws::String proxyPassword; Aws::String proxySSLCertPath; Aws::String proxySSLCertType; Aws::String proxySSLKeyPath; Aws::String proxySSLKeyType; Aws::String proxySSLKeyPassword; std::shared_ptr<Aws::Utils::RateLimits::RateLimiterInterface> readRateLimiter = nullptr; Aws::String region; Aws::Client::RequestCompressionConfig requestCompressionConfig; long requestTimeoutMs = 0; std::shared_ptr<RetryStrategy> retryStrategy = nullptr; Aws::Http::Scheme scheme; unsigned long tcpKeepAliveIntervalMs = 30000; std::shared_ptr<smithy::components::tracing::TelemetryProvider> telemetryProvider; Aws::String userAgent; bool useDualStack = false; bool useFIPS = false; bool verifySSL = true; Aws::Http::Version version = Http::Version::HTTP_VERSION_2TLS; struct WinHTTPOptions { bool useAnonymousAuth = false; } winHTTPOptions; std::shared_ptr<Aws::Utils::RateLimits::RateLimiterInterface> writeRateLimiter = nullptr; static Aws::String LoadConfigFromEnvOrProfile(const Aws::String& envKey, const Aws::String& profile, const Aws::String& profileProperty, const Aws::Vector<Aws::String>& allowedValues, const Aws::String& defaultValue);

Descrições das variáveis de configuração

A lista a seguir descreve as variáveis do ClientConfiguration membro que você pode usar para personalizar o comportamento do cliente.

accountId

Especifica a Conta da AWS ID do roteamento de endpoints baseado em conta. Use o formato 111122223333. O roteamento de endpoints baseado em conta melhora o desempenho da solicitação para alguns serviços.

accountIdEndpointModo

Controla o comportamento de roteamento de endpoints com base na conta. Os valores válidos são “obrigatório”, “desativado” ou “preferencial”. O valor padrão é “preferencial”. Defina como “desativado” para desativar o roteamento de endpoints baseado em conta quando necessário.

allowSystemProxy

Controla se o cliente HTTP descobre as configurações de proxy do sistema. A configuração padrão é falsa. Defina como true para ativar a descoberta automática de proxy.

appId

Especifica um identificador opcional específico do aplicativo. Quando definido, esse valor é anexado ao User-Agent cabeçalho no formatoApp/{appId}. Você pode definir esse valor usando a variável de AWS_SDK_UA_APP_ID ambiente ou o atributo de perfil de configuração sdk_ua_app_id compartilhado.

CAPath, Arquivo CA

Instrui o cliente HTTP sobre onde encontrar o armazenamento confiável de certificados SSL. Um exemplo de armazenamento confiável pode ser um diretório preparado com o utilitário c_rehash OpenSSL. Essas variáveis não precisam ser definidas, a menos que seu ambiente use links simbólicos. Essas variáveis não têm efeito nos sistemas Windows e macOS.

Configuração da soma de verificação

Contém configurações de cálculo e validação da soma de verificação. Inclui requestChecksumCalculation e responseChecksumValidation com valor padrão WHEN_SUPPORTED.

Configurar fábricas

Especifica métodos de fábrica para inicializar classes de utilitários do cliente, como e. Executor RetryStrategy Usa fábricas padrão, a menos que seja substituído.

requestTimeoutMs and connectTimeoutMs

Especifica a quantidade de tempo em milissegundos de espera antes de atingir o tempo limite de uma solicitação HTTP. Por exemplo, considere aumentar esses tempos ao transferir arquivos grandes.

credentialProviderConfig

Contém configurações para provedores de credenciais. Use essa estrutura para personalizar a forma como o SDK obtém AWS as credenciais.

disableExpectHeader

Aplicável somente para clientes HTTP CURL. Por padrão, o CURL adiciona um cabeçalho “Expect: 100-Continue” em uma solicitação HTTP para evitar o envio da carga HTTP em situações em que o servidor responde com um erro imediatamente após receber o cabeçalho. Esse comportamento pode economizar uma viagem de ida e volta e é útil em situações em que a carga útil é pequena e a latência da rede é relevante. A configuração padrão da variável é falsa. Se definido como verdadeiro, o CURL é instruído a enviar o cabeçalho da solicitação HTTP e a carga útil do corpo juntos.

Desativar o IMDS

Controla se as chamadas do Instance Metadata Service (IMDS) estão desativadas. A configuração padrão é falsa. Defina como true para desativar as chamadas do IMDS quando executadas fora das EC2 instâncias.

Desativar o IMDSv1

Controla se IMDSv1 as chamadas são desativadas durante a permissão IMDSv2. A configuração padrão é falsa. Defina como true para desativar somente IMDSv1 chamadas para aumentar a segurança.

enableClockSkewAjuste

Controla se a inclinação do relógio é ajustada após cada tentativa de HTTP. A configuração padrão é falsa.

enableEndpointDiscovery

Controla se a descoberta de endpoints é usada. Por padrão, endpoints regionais ou substituídos são usados. Para habilitar a descoberta de endpoints, defina a variável como verdadeira.

enableHostPrefixInjeção

Controla se o host HTTP adiciona um prefixo “data-” às DiscoverInstances solicitações. Por padrão, esse comportamento está habilitado. Para desativá-la, defina a variável como falsa.

enableHttpClientTraço

Controla se o rastreamento do cliente HTTP está habilitado para fins de depuração. A configuração padrão é falsa. Defina como true para habilitar o registro detalhado de solicitações e respostas HTTP.

enableTcpKeepVivo

Controla se os pacotes TCP keep-alive devem ser enviados. A configuração padrão é verdadeira. Use em conjunto com a tcpKeepAliveIntervalMs variável. Essa variável não se aplica ao Win INet e ao IXMLHTTPRequest2 cliente.

Substituição do endpoint

Especifica um endpoint HTTP substitutivo com o qual se comunicar com um serviço.

executor

Referencia a implementação do manipulador executor assíncrono. O comportamento padrão é criar e separar um encadeamento para cada chamada assíncrona. Para alterar esse comportamento, implemente uma subclasse da Executor classe e atribua uma instância a essa variável.

Siga os redirecionamentos

Controla o comportamento ao lidar com códigos de redirecionamento HTTP 300.

httpLibOverride

Especifica a implementação HTTP retornada pela fábrica HTTP padrão. O cliente HTTP padrão para Windows é WinHTTP. O cliente HTTP padrão para todas as outras plataformas é CURL.

httpLibPerfModo

Especifica o modo de desempenho da biblioteca HTTP. A configuração padrão é LOW_LATENCY. Você pode ajustar essa configuração para otimizar as diferentes características de desempenho.

httpRequestTimeoutSrta

Especifica o tempo limite da solicitação HTTP em milissegundos. O valor padrão é 0 (sem tempo limite). Considere aumentar esse valor ao transferir arquivos grandes.

lowSpeedLimit

Especifica a velocidade de transferência mínima permitida em bytes por segundo. Se a velocidade de transferência cair abaixo da velocidade especificada, a operação de transferência será abortada. A configuração padrão é 1 byte/segundo. Essa variável é aplicável somente para clientes CURL.

Conexões máximas

Especifica o número máximo de conexões HTTP com um único servidor. O valor padrão é 25. Não existe nenhum valor máximo permitido além do que sua largura de banda pode razoavelmente suportar.

nonProxyHosts

Especifica uma matriz de nomes de host que devem ignorar as configurações de proxy. Use essa configuração para excluir hosts específicos da configuração do proxy.

profileName

Especifica o nome do AWS perfil a ser usado para configuração. O SDK carrega as configurações do perfil especificado no arquivo de AWS configuração.

proxyCaFile

Especifica o caminho para o arquivo da autoridade de certificação para conexões proxy quando ele é diferente do padrão.

proxyCaPath

Especifica o caminho para o armazenamento confiável da autoridade de certificação para conexões proxy quando ele é diferente do padrão.

ProxyScheme, ProxyHost, ProxyPort e ProxyPassword proxyUserName

Usado para instalar e configurar um proxy para todas as comunicações com AWS. Exemplos de quando essa funcionalidade pode ser útil incluem a depuração em conjunto com a suíte Burp ou o uso de um proxy para se conectar à Internet.

SSLCertCaminho do proxy

Especifica o caminho para o arquivo de certificado SSL para conexões proxy que exigem certificados de cliente.

SSLCertTipo de proxy

Especifica o tipo de certificado SSL para conexões proxy. Os tipos comuns incluem PEM e DER.

SSLKeySenha do proxy

Especifica a senha da chave privada SSL usada em conexões proxy quando a chave é protegida por senha.

SSLKeyCaminho do proxy

Especifica o caminho para o arquivo de chave privada SSL para conexões proxy que exigem certificados de cliente.

SSLKeyTipo de proxy

Especifica o tipo de chave privada SSL para conexões proxy. Os tipos comuns incluem PEM e DER.

writeRateLimiter and readRateLimiter

Referências às implementações de limitadores de taxa de leitura e gravação que são usados para limitar a largura de banda usada pela camada de transporte. Por padrão, as taxas de leitura e gravação não são limitadas. Para introduzir a limitação, implemente uma subclasse do RateLimiterInterface e atribua uma instância a essas variáveis.

região

Especifica a AWS região a ser usada, como us-east-1. Por padrão, a Região usada é a Região padrão configurada nas AWS credenciais aplicáveis.

requestCompressionConfig

Contém configurações para compactação de solicitações. Use essa estrutura para controlar quando e como as solicitações são compactadas antes da transmissão.

Estratégia de nova tentativa

Referencia a implementação da estratégia de repetição. A estratégia padrão implementa uma política de recuo exponencial. Para executar uma estratégia diferente, implemente uma subclasse da RetryStrategy classe e atribua uma instância a essa variável.

scheme

Especifica o esquema de endereçamento do URI, HTTP ou HTTPS. O esquema padrão é HTTPS.

tcpKeepAliveIntervalMs

Especifica o intervalo de tempo em milissegundos no qual enviar um pacote keep-alive por meio de uma conexão TCP. O intervalo padrão é de 30 segundos. A configuração mínima é de 15 segundos. Essa variável não se aplica ao Win INet e ao IXMLHTTPRequest2 cliente.

Provedor de telemetria

Referencia a implementação do provedor de telemetria para coletar métricas e rastrear dados. Defina essa configuração para ativar os recursos de observabilidade.

userAgent

Apenas para uso interno. Não altere a configuração dessa variável.

useDualStack

Controla se deve usar pilha dupla IPv4 e IPv6 endpoints. Observe que nem todos os AWS serviços oferecem suporte IPv6 em todas as regiões.

Use FIPS

Controla se os módulos criptográficos validados pelo Federal Information Processing Standards (FIPS) 140-2 devem ser usados. A configuração padrão é falsa. Defina como verdadeiro quando a conformidade com FIPS for necessária.

Verifique o SSL

Controla se os certificados SSL devem ser verificados. Por padrão, os certificados SSL são verificados. Para desativar a verificação, defina a variável como falsa.

version

Especifica a versão HTTP a ser usada para solicitações. A configuração padrão é HTTP_VERSION_2TLS (HTTP/2 sobre TLS).

ganhar HTTPOptions

Contém opções de configuração HTTP específicas do Windows. Inclui useAnonymousAuth com a configuração padrão false.