本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在代码中配置适用于 C++ 的 AWS SDK 服务客户端
当直接在代码中处理配置时,配置范围仅限于使用该代码的应用程序。在该应用程序中,您可选择以下配置方式:对所有服务客户端的全局配置、对某一特定 AWS 服务类型所有客户端的配置,或对某个具体服务客户端实例的配置。
适用于 C++ 的 AWS SDK 包含 AWS 服务客户端类,这些类提供了与您应用程序中使用的 AWS 服务进行交互的功能。在适用于 C++ 的 SDK 中,您可以更改默认客户端配置,这在您想要执行以下操作时非常有用:
-
通过代理连接到 Internet
-
更改 HTTP 传输设置,例如连接超时和请求重试次数
-
指定 TCP 套接字缓冲区大小提示
ClientConfiguration 是适用于 C++ 的 SDK 中的一个结构,您可以在代码中将其实例化并加以使用。以下代码段说明了如何使用该类通过代理访问 Amazon S3。
Aws::Client::ClientConfiguration clientConfig; clientConfig.proxyHost = "localhost"; clientConfig.proxyPort = 1234; clientConfig.proxyScheme = Aws::Http::Scheme::HTTPS; Aws::S3::S3Client(clientConfig);
配置变量声明
ClientConfiguration 结构声明了以下成员变量:
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);
配置变量描述
以下列表介绍了可用于自定义客户端行为的 ClientConfiguration 成员变量。
- accountId
-
指定 AWS 账户 ID 以用于基于账户的端点路由。使用格式 111122223333。基于账户的端点路由可提高某些服务的请求性能。
- accountIdEndpointMode
-
控制基于账户的端点路由行为。有效值为“required”、“disabled”或“preferred”。默认值为“preferred”。设置为“disabled”可在必要时关闭基于账户的端点路由。
- allowSystemProxy
-
控制 HTTP 客户端是否发现系统代理服务器设置。默认设置为 false。设置为 true 以启用自动代理发现。
- appId
-
指定可选的特定于应用程序的标识符。设置后,此值将以
App/{appId}格式附加到User-Agent标头中。您可以使用AWS_SDK_UA_APP_ID环境变量或sdk_ua_app_id共享配置文件属性设置此值。 - caPath、caFile
-
指示 HTTP 客户端查找 SSL 证书信任存储的位置。示例信任存储库可能是使用 OpenSSL
c_rehash实用程序准备的目录。除非您的环境使用符号链接,否则无需设置这些变量。这些变量对 Windows 和 macOS 系统没有影响。 - checksumConfig
-
包含校验和计算和验证设置。包括
requestChecksumCalculation和responseChecksumValidation,默认值为 WHEN_SUPPORTED。 - configFactories
-
指定用于初始化客户端实用程序类的工厂方法,例如
Executor和RetryStrategy。除非被覆盖,否则使用默认工厂。 - requestTimeoutMs 和 connectTimeoutMs
-
指定 HTTP 请求超时前的等待时间(以毫秒为单位)。例如,在传输大文件时,可以考虑增加这些时间。
- credentialProviderConfig
-
包含凭证提供程序的配置设置。使用此结构来自定义 SDK 获取 AWS 凭证的方式。
- disableExpectHeader
-
仅适用于 CURL HTTP 客户端。默认情况下,CURL 会在 HTTP 请求中添加“Expect: 100-Continue”标头,以避免在服务器收到标头后立即返回错误的情况下发送 HTTP 有效载荷。此行为可以节省一次网络往返,在有效载荷较小且网络延迟敏感的情况下非常有用。该变量的默认设置为 false。如果设置为 true,则指示 CURL 将 HTTP 请求标头和正文有效载荷一起发送。
- disableIMDS
-
控制是否禁用实例元数据服务(IMDS)调用。默认设置为 false。设置为 true 可在 EC2 实例之外运行时禁用 IMDS 调用。
- disableImdsV1
-
控制是否在允许 IMDSv2 的同时禁用 IMDSv1 调用。默认设置为 false。设置为 true 可仅禁用 IMDSv1 调用以增强安全性。
- enableClockSkewAdjustment
-
控制每次 HTTP 尝试后是否调整时钟偏差。默认设置为 false。
- enableEndpointDiscovery
-
控制是否使用端点发现。默认情况下,将使用区域或被覆盖的端点。要启用端点发现,请将此变量设置为 true。
- enableHostPrefixInjection
-
控制 HTTP 主机是否向 DiscoverInstances 请求添加“data-”前缀。默认情况下,启用此行为。要禁用此行为,请将此变量设置为 false。
- enableHttpClientTrace
-
控制是否出于调试目的启用 HTTP 客户端跟踪。默认设置为 false。设置为 true 将会启用详细的 HTTP 请求和响应日志记录。
- enableTcpKeepAlive
-
控制是否发送 TCP 保持连接数据包。默认设置为 true。与
tcpKeepAliveIntervalMs变量结合使用。此变量不适用于 WinINet 和 IXMLHTTPRequest2 客户端。 - endpointOverride
-
指定用于与服务通信的覆盖 HTTP 端点。
- executor
-
引用异步执行器处理程序的实现。默认行为是为每个异步调用创建和分离线程。要更改此行为,请实现
Executor类的一个子类并为该变量分配一个实例。 - followRedirects
-
控制处理 HTTP 300 重定向代码时的行为。
- httpLibOverride
-
指定默认 HTTP 工厂返回的 HTTP 实现。Windows 的默认 HTTP 客户端是 WinHTTP。所有其他平台的默认 HTTP 客户端均为 CURL。
- httpLibPerfMode
-
指定 HTTP 库的性能模式。默认设置为 LOW_LATENCY。您可以调整此设置以针对不同的性能特征进行优化。
- httpRequestTimeoutMs
-
指定 HTTP 请求超时(以毫秒为单位)。默认值为 0(无超时)。传输大文件时,请考虑增加此值。
- lowSpeedLimit
-
指定允许的最低传输速度(以每秒字节为单位)。如果传输速度低于指定速度,则传输操作将中止。默认设置为 1 字节/秒。此变量仅适用于 CURL 客户端。
- maxConnections
-
指定与单个服务器的 HTTP 的最大 HTTP 连接数。默认值为 25。除您的带宽实际可支持的范围外,无其他最大允许值限制。
- nonProxyHosts
-
指定应绕过代理设置的主机名数组。使用此设置可将特定主机排除在代理配置之外。
- profileName
-
指定要用于配置的 AWS 配置文件(profile)名称。SDK 会从 AWS 配置文件中指定的配置文件(profile)加载设置。
- proxyCaFile
-
指定代理连接的证书颁发机构文件路径,当该路径与默认路径不同时使用。
- proxyCaPath
-
指定代理连接的证书颁发机构信任存储路径,当该路径与默认路径不同时使用。
- proxyScheme、proxyHost、proxyPort、proxyUserName 和 proxyPassword
-
用于为与 AWS 的所有通信设置和配置代理。该功能的适用场景示例包括:结合 Burp Suite 进行调试,或通过代理连接互联网。
- proxySSLCertPath
-
为需要客户端证书的代理连接指定 SSL 证书文件的路径。
- proxySSLCertType
-
指定用于代理连接的 SSL 证书类型。常见类型包括 PEM 和 DER。
- proxySSLKeyPassword
-
指定代理连接中使用的 SSL 私钥的密码,前提是该私钥受密码保护。
- proxySSLKeyPath
-
为需要客户端证书的代理连接指定 SSL 私钥文件的路径。
- proxySSLKeyType
-
指定用于代理连接的 SSL 私钥类型。常见类型包括 PEM 和 DER。
- writeRateLimiter 和 readRateLimiter
-
对读/写速率限制器实现的引用,这些限制器用于限制传输层的带宽使用。默认情况下,读取和写入速率不受限制。要引入限制功能,请实现
RateLimiterInterface的一个子类并为这些变量分配一个实例。 - 区域
-
指定要使用的 AWS 区域,例如 us-east-1。默认情况下,使用的区域是在适用的 AWS 凭证中配置的默认区域。
- requestCompressionConfig
-
包含请求压缩的配置设置。使用此结构控制请求在传输前的压缩时机与压缩方式。
- retryStrategy
-
引用重试策略的实现。默认策略实现指数回退策略。要执行不同的策略,请实现
RetryStrategy类的子类并为该变量分配一个实例。 - scheme
-
指定 URI 寻址方案(HTTP 或 HTTPS)。默认方案是 HTTPS。
- tcpKeepAliveIntervalMs
-
指定通过 TCP 连接发送保持连接(keep-alive)数据包的时间间隔(以毫秒为单位)。默认间隔为 30 秒。最小设置为 15 秒。此变量不适用于 WinINet 和 IXMLHTTPRequest2 客户端。
- telemetryProvider
-
引用遥测提供程序实现来收集指标和跟踪数据。配置此设置来启用可观测性功能。
- userAgent
-
仅供内部使用。请勿更改此变量的设置。
- useDualStack
-
控制是否使用 IPv4 和 IPv6 双栈端点。请注意,并非所有 AWS 服务在所有区域都支持 IPv6。
- useFIPS
-
控制是否使用经过联邦信息处理标准(FIPS)140-2 验证的加密模块。默认设置为 false。如果需要实现 FIPS 合规性,则设置为 true。
- verifySSL
-
控制是否验证 SSL 证书。默认情况下将验证 SSL 证书。要禁用验证,请将变量设置为 false。
- version
-
指定用于请求的 HTTP 版本。默认设置为 HTTP_VERSION_2TLS(基于 TLS 的 HTTP/2)。
- winHTTPOptions
-
包含特定于 Windows 的 HTTP 配置选项。包括 useAnonymousAuth,默认设置为 false。