使用 AWS SDK for Java 进行 AWS 开发的最佳实践 - 适用于 Java 的 AWS 开发工具包
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

使用 AWS SDK for Java 进行 AWS 开发的最佳实践

以下最佳实践可帮助您避免在使用 AWS SDK for Java 开发 AWS 应用程序时遇到问题和麻烦。这些最佳实践已按服务分类整理。

Amazon S3

避免ResetExceptions

当您使用流(通过 AmazonS3 客户端或 TransferManager)将对象上传到 Amazon S3 时,可能遇到网络连接或超时问题。默认情况下,AWS SDK for Java 将尝试通过以下方式尝试重试失败的传输:先在传输开始前标记输入流,然后在重试前重新设置它。

如果流不支持标记和重置操作,开发工具包将在出现临时故障并支持重试时引发 ResetException

最佳实践

建议您使用支持标记和重置操作的流。

避免 ResetException 最可靠的方式是使用 File (文件)FileInputStream 提供数据,AWS SDK for Java可以处理这些数据,不受标记和重置限制的约束。

如果流不是 FileInputStream但支持标记和重置,您可以使用 setReadLimitRequestClientOptions 的 方法设置标记限制。 其默认值为 128 KB。将读取限制值设置为比流大小多 1 个字节 的值将可靠地避免 ResetException

例如,如果流的最大预期大小为 100000 字节,则将读取限制设置为 100001 (100000 + 1) 字节。标记和重置操作将始终适用于 100000 字节或更少的字节。请注意,这可能会导致一些流将该数量的字节缓冲到内存中。