本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在代码中为 C++ 服务客户端配置 AWS SDK
当直接在代码中处理配置时,配置范围仅限于使用该代码的应用程序。在该应用程序中,有用于所有服务客户机的全局配置、特定 AWS 服务 类型的所有客户机的配置或特定服务客户机实例的配置选项。
适用于 C++ 的 AWS SDK 包括提供与您在应用程序中使用的进行交互 AWS 服务 的功能的 AWS 服务 客户端类。在 SDK for C++ 中,您可以更改默认的客户端配置,这在您想要执行以下操作时非常有用:
-
通过代理连接到 Internet
-
更改 HTTP 传输设置,例如连接超时和请求重试次数
-
指定 TCP 套接字缓冲区大小提示
ClientConfiguration
是 SDK for C++ 中的一个结构,你可以在代码中实例化并使用它。以下代码段说明了如何使用该类通过代理访问 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 的格式。基于账户的端点路由可提高某些服务的请求性能。
- accountIdEndpoint模式
-
控制基于账户的端点路由行为。有效值为 “必填”、“已禁用” 或 “首选”。默认值为 “首选”。设置为 “已禁用” 可在必要时关闭基于账户的端点路由。
- 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 系统没有影响。 - checksumC
-
包含校验和计算和验证设置。包括
requestChecksumCalculation
并responseChecksumValidation
使用默认值 WHEN_SUPPORTED。 - 配置工厂
-
指定用于初始化客户端实用程序类的工厂方法,例如
Executor
和。RetryStrategy
除非被覆盖,否则使用默认工厂。 - requestTimeoutMs 和 connectTimeoutMs
-
指定 HTTP 请求超时之前要等待的时间(以毫秒为单位)。例如,在传输大文件时,可以考虑增加这些时间。
- credentialProviderConfig
-
包含凭据提供者的配置设置。使用此结构来自定义 SDK 获取 AWS 凭证的方式。
- disableExpectHeader
-
仅适用于 CURL HTTP 客户端。默认情况下,CURL 会在 HTTP 请求中添加 “Expect:100-Continue” 标头,以避免在服务器收到标头后立即响应错误的情况下发送 HTTP 有效负载。此行为可以节省往返时间,并且在有效载荷较小且网络延迟相关的情况下非常有用。该变量的默认设置为 false。如果设置为 true,则会指示 CURL 一起发送 HTTP 请求标头和正文有效负载。
- 禁用 IMDS
-
控制是否禁用实例元数据服务 (IMDS) 调用。默认设置为 false。设置为 true 可在 EC2 实例外部运行时禁用 IMDS 调用。
- 禁用 imdsv1
-
控制在允许 IMDSv1 通话时是否禁用呼叫 IMDSv2。默认设置为 false。设置为 true 可仅禁用 IMDSv1 呼叫以增强安全性。
- enableClockSkew调整
-
控制每次 HTTP 尝试后是否调整时钟偏差。默认设置为 false。
- enableEndpointDiscovery
-
控制是否使用端点发现。默认情况下,使用区域或被覆盖的终端节点。要启用端点发现,请将变量设置为 true。
- enableHostPrefix注射
-
控制 HTTP 主机是否在 DiscoverInstances请求中添加 “data-” 前缀。默认情况下,此行为处于启用状态。要将其禁用,请将变量设置为 false。
- enableHttpClient跟踪
-
控制是否为调试目的启用 HTTP 客户端跟踪。默认设置为 false。设置为 true 可启用详细的 HTTP 请求和响应日志记录。
- enableTcpKeep还活着
-
控制是否发送 TCP 保持活动状态的数据包。默认设置为 true。与
tcpKeepAliveIntervalMs
变量一起使用。此变量不适用于 Win INet 和 IXMLHTTPRequest2 客户端。 - 终端节点覆盖
-
指定用于与服务通信的覆盖 HTTP 端点。
- 执行者
-
引用异步执行器处理程序的实现。默认行为是为每个异步调用创建和分离线程。要更改此行为,请实现该类的子
Executor
类并为该变量分配一个实例。 - 关注重定向
-
控制处理 HTTP 300 重定向代码时的行为。
- httpLibOverride
-
指定默认 HTTP 工厂返回的 HTTP 实现。Windows 的默认 HTTP 客户端是 WinHTTP。所有其他平台的默认 HTTP 客户端都是 CURL。
- httpLibPerf模式
-
指定 HTTP 库的性能模式。默认设置为 LOW_LATENCY。您可以调整此设置以针对不同的性能特征进行优化。
- httpRequestTimeout女士
-
指定 HTTP 请求超时时间(以毫秒为单位)。默认值为 0(无超时)。传输大文件时,请考虑增加此值。
- lowSpeedLimit
-
指定允许的最低传输速度(以每秒字节为单位)。如果传输速度低于指定速度,则传输操作将中止。默认设置为 1 字节/秒。此变量仅适用于 CURL 客户端。
- 最大连接数
-
指定与单个服务器的最大 HTTP 连接数。默认值为 25。除了您的带宽可以合理支持的范围外,不存在允许的最大值。
- nonProxyHosts
-
指定应绕过代理设置的主机名数组。使用此设置可将特定主机排除在代理配置之外。
- profileName
-
指定用于 AWS 配置的配置文件名称。SDK 将来自指定配置文件的设置加载到 AWS 配置文件中。
- proxyCaFile
-
指定代理连接的证书颁发机构文件的路径与默认路径不同。
- proxyCaPath
-
为代理连接指定证书颁发机构信任存储的路径(如果路径与默认路径不同)。
- ProxyScheme、ProxyHost、proxyPort 和 proxyPassword proxyUserName
-
用于为与的所有通信设置和配置代理 AWS。此功能何时可能有用的示例包括与 Burp 套件一起进行调试,或者使用代理连接到 Internet。
- 代理SSLCert路径
-
为需要客户端证书的代理连接指定 SSL 证书文件的路径。
- 代理SSLCert类型
-
指定代理连接的 SSL 证书类型。常见的类型包括 PEM 和 DER。
- 代理SSLKey密码
-
指定代理连接中使用的 SSL 私钥的密码,前提是该密钥受密码保护。
- 代理SSLKey路径
-
为需要客户端证书的代理连接指定 SSL 私钥文件的路径。
- 代理SSLKey类型
-
指定代理连接的 SSL 私钥类型。常见的类型包括 PEM 和 DER。
- writeRateLimiter 和 readRateLimiter
-
引用读写速率限制器的实现,这些限制器用于限制传输层使用的带宽。默认情况下,读取和写入速率不受限制。要引入限制,请实现的子类
RateLimiterInterface
并为这些变量分配一个实例。 - 区域
-
指定要使用的 AWS 区域,例如 us-ea st-1。默认情况下,使用的区域是在适用 AWS 凭证中配置的默认区域。
- requestCompressionConfig
-
包含请求压缩的配置设置。使用此结构来控制在传输请求之前压缩的时间和方式。
- 重试策略
-
引用重试策略的实现。默认策略实施指数退避策略。要执行不同的策略,请实现该类的子类并为该
RetryStrategy
变量分配一个实例。 - scheme
-
指定 URI 寻址方案,可以是 HTTP 或 HTTPS。默认方案是 HTTPS。
- tcpKeepAliveIntervalMs
-
指定通过 TCP 连接发送保持活动状态数据包的时间间隔(以毫秒为单位)。默认间隔为 30 秒。最小设置为 15 秒。此变量不适用于 Win INet 和 IXMLHTTPRequest2 客户端。
- 遥测提供商
-
引用遥测提供程序实现来收集指标和跟踪数据。配置此设置以启用可观测性功能。
- userAgent
-
仅供内部使用。请勿更改此变量的设置。
- useDualStack
-
控制是否使用双堆栈 IPv4 和 IPv6 端点。请注意,并非所有地区都支持 IPv6 所有 AWS 服务。
- 使用 Fips
-
控制是否使用经联邦信息处理标准 (FIPS) 140-2 验证的加密模块。默认设置为 false。如果需要 FIPS 合规性,则设置为 true。
- verifysSL
-
控制是否验证 SSL 证书。默认情况下,SSL 证书是经过验证的。要禁用验证,请将变量设置为 false。
- version
-
指定用于请求的 HTTP 版本。默认设置为 HTTP_VERSION_2TLS(基于 TLS 的 HTTP/2)。
- 赢了 HTTPOptions
-
包含特定于 Windows 的 HTTP 配置选项。包括默认设置 useAnonymousAuth为 false。