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

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

智能配置默认值

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

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

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

使用此设置,您可以选择与您的应用程序架构相匹配的模式,然后为您的应用程序提供经过优化的默认值。如果 S Amazon DK 设置明确设置了值,则该值始终优先。如果 S Amazon DK 设置没有明确设置值,并且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— 指定软件开发工具包如何确定用于与该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 支持本主题中所述的功能和设置。所有部分例外情况均已注明。 Amazon SDK for Java 和 Amazon SDK for Kotlin 唯一支持任何 JVM 系统属性设置。

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