智能配置默认值 - Amazon 软件开发工具包和工具
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

智能配置默认值

借助智能配置默认值这一功能,Amazon SDK 可以为其他配置设置提供预定义的、经过优化的默认值。

使用以下方法配置此功能:

defaults_mode - 共享 Amazon config 文件设置
AWS_DEFAULTS_MODE - 环境变量

使用此设置,您可以选择与您的应用程序架构相匹配的模式,然后为您的应用程序提供经过优化的默认值。如果 Amazon SDK 设置明确设置了值,则该值始终优先使用。如果 Amazon SDK 设置未明确设置值,并且 defaults_mode 不是旧版,则此功能可以为针对您的应用程序优化的各种设置提供不同的默认值。设置可能包括以下内容:HTTP 通信设置、重试行为、服务区域端点设置,可能还包括任何与 SDK 相关的配置。使用此功能的客户可以获得针对常见使用场景量身定制的新配置默认值。由于提供的默认值可能会随着最佳实践的发展而改变,因此如果您的 defaults_mode 不是legacy,我们建议您在升级 SDK 时对您的应用程序进行测试。

默认值legacy

注意:SDK 的新主要版本将默认为standard

有效值

  • legacy – 提供默认设置,这些设置因 SDK 而异,并且在建立 defaults_mode 之前就已存在。

  • standard – 提供最新的推荐默认值,这些默认值在大多数情况下都应该可以安全运行。

  • in-region – 基于标准模式构建,包括为从同一 Amazon Web Services 区域 内部调用 Amazon Web Services 的应用程序量身定制的优化。

  • cross-region – 基于标准模式构建,包括为在不同区域中调用 Amazon Web Services 的应用程序量身定制的优化。

  • mobile – 基于标准模式构建,包括为移动应用程序量身定制的优化。

  • auto – 基于标准模式构建,包括实验功能。SDK 会尝试发现运行时系统环境以自动确定适当的设置。自动检测是基于启发式的,无法提供 100% 的准确性。如果无法确定运行时系统环境,则使用 standard 模式。自动检测可能会查询实例元数据和用户数据,这可能会带来延迟。如果启动延迟对您的应用程序而言至关重要,我们建议您改为选择显式 defaults_mode 延迟。

config 文件中设置此值的示例:

[default] defaults_mode = standard

以下参数可能会根据 defaults_mode 的选项进行优化:

  • retryMode – 指定 SDK 如何尝试重试。请参阅重试行为

  • stsRegionalEndpoints – 指定 SDK 如何确定用于与 Amazon Security Token Service (Amazon STS) 通信的 Amazon Web Service 端点。请参阅Amazon STS 区域化端点

  • s3UsEast1RegionalEndpoints – 指定 SDK 如何确定用于与 us-east-1 区域的 Amazon S3 通信的 Amazon 服务端点。

  • connectTimeoutInMillis – 在套接字上进行初始连接尝试后,超时之前的时长。如果客户端没有收到连接握手完成的消息,则客户端会放弃操作并使其失败。

  • tlsNegotiationTimeoutInMillis – 从发送 CLIENT HELLO 消息到客户端和服务器完全协商密码并交换密钥,TLS 握手可能花费的最大时长。

每个设置的默认值会根据为应用程序选择的 defaults_mode 而变化。这些值目前设置如下(可能会发生变化):

参数 standard 模式 in-region 模式 cross-region 模式 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

例如,如果您选择的 defaults_modestandard,则将为 retry_mode 分配standard的值(来自有效的 retry_mode 选项),将为 stsRegionalEndpoints 分配regional的值(来自有效 stsRegionalEndpoints 选项)。

与 Amazon SDK 的兼容性

以下 SDK 支持本主题中所述的功能和设置。所有部分例外情况均已注明。

SDK 支持 备注或更多信息
Amazon CLI v2
适用于 C++ 的 SDK 参数未优化:stsRegionalEndpointss3UsEast1RegionalEndpointstlsNegotiationTimeoutInMillis
适用于 Go V2 (1.x) 的 SDK 参数未优化:retryModestsRegionalEndpointss3UsEast1RegionalEndpoints
适用于 Go 1.x (V1) 的 SDK
适用于 Java 2.x 的 SDK 参数未优化:stsRegionalEndpoints
适用于 Java 1.x 的 SDK
适用于 JavaScript 3.x 的软件开发工具包 参数未优化:stsRegionalEndpointss3UsEast1RegionalEndpointstlsNegotiationTimeoutInMillisconnectTimeoutInMillis 被称为 connectionTimeout
适用于 JavaScript 2.x 的 SDK
适用于 Kotlin 的 SDK
适用于 .NET 3.x 的 SDK 参数未优化:connectTimeoutInMillistlsNegotiationTimeoutInMillis
适用于 PHP 3.x 的 SDK 参数未优化:tlsNegotiationTimeoutInMillis
适用于 Python (Boto3) 的 SDK 参数未优化:tlsNegotiationTimeoutInMillis
适用于 Ruby 3.x 的 SDK
适用于 Rust 的 SDK
用于 PowerShell 参数未优化:connectTimeoutInMillistlsNegotiationTimeoutInMillis