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

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

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

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

Amazon S3

避免 ResetExceptions

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

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

最佳实践

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

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

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

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