的最佳实践AWS通过进行开发AWS SDK for Java - AWS SDK for Java

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

的最佳实践AWS通过进行开发AWS SDK for Java

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

S3

避免 ResetExceptions

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

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

最佳实践

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

最可靠的避免ResetException是使用以下方法提供数据File (文件)要么FileInputStream,哪个AWS SDK for Java可以在不受标记和重置限制的限制的情况下进行处理。

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

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