智能配置默认值 - AWS SDKs和工具

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

智能配置默认值

借助智能配置默认值功能, AWS SDKs可以为其他配置设置提供预定义的、优化的默认值。

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

defaults_mode-共享 AWS config文件设置
AWS_DEFAULTS_MODE - 环境变量
aws.defaultsMode-JVM 系统属性:仅限 Java/Kotlin

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

默认值legacy

注意:will 的新主要SDKs版本默认为standard

有效值:

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

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

  • in-region— 基于标准模式构建,包括为 AWS 服务 从标准模式内部调用的应用程序量身定制的优化 AWS 区域。

  • cross-region— 基于标准模式构建,包括为调用不同区域的应用程序量身定制 AWS 服务 的优化。

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

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

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

[default] defaults_mode = standard

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

  • retryMode— 指定SDK尝试的重试方式。请参阅 重试行为

  • stsRegionalEndpoints— 指定如何SDK确定它用来与 AWS Security Token Service (AWS STS) 通信的 AWS 服务 端点。请参阅 AWS STS 区域化终端节点

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

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

  • tlsNegotiationTimeoutInMillis— 从发送CLIENTHELLO消息到客户端和服务器完全协商密码并交换密钥为止,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选项)。

兼容 AWS SDKs

以下内容SDKs支持本主题中描述的功能和设置。所有部分例外情况均已注明。 AWS SDK for Java 和 AWS SDK for Kotlin 唯一支持任何JVM系统属性设置。

SDK 支持 备注或更多信息
AWS CLI v2
SDK对于 C++ 参数未优化:stsRegionalEndpointss3UsEast1RegionalEndpointstlsNegotiationTimeoutInMillis
SDK适用于 Go V2 (1.x) 参数未优化:retryModestsRegionalEndpointss3UsEast1RegionalEndpoints
SDK适用于 Go 1.x (V1)
SDK适用于 Java 2.x 参数未优化:stsRegionalEndpoints
SDK适用于 Java 1.x
SDK适用于 JavaScript 3.x 参数未优化:stsRegionalEndpointss3UsEast1RegionalEndpointstlsNegotiationTimeoutInMillisconnectTimeoutInMillis 被称为 connectionTimeout
SDK适用于 JavaScript 2.x
SDK对于 Kotlin 来说
SDK对于。 NET3.x 参数未优化:connectTimeoutInMillistlsNegotiationTimeoutInMillis
SDK适用于 PHP 3.x 参数未优化:tlsNegotiationTimeoutInMillis
SDK适用于 Python (Boto3) 参数未优化:tlsNegotiationTimeoutInMillis
SDK适用于 Ruby 3.x
SDK对于 Rust
用于 PowerShell 参数未优化:connectTimeoutInMillistlsNegotiationTimeoutInMillis