

 适用于 Java 的 AWS SDK 1.x于2025年 end-of-support 12月31日达到。我们建议您迁移到 [AWS SDK for Java 2.x](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/home.html) 以继续获得新功能、可用性改进和安全更新。

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

# AWS 开发的最佳实践 适用于 Java 的 AWS SDK
<a name="best-practices"></a>

以下最佳做法可以帮助您在使用开发 AWS 应用程序时避免出现问题或麻烦 适用于 Java 的 AWS SDK。这些最佳实践已按服务分类整理。

## S3
<a name="s3"></a>

### 避免 ResetExceptions
<a name="s3-avoid-resetexception"></a>

当您使用流（通过`AmazonS3`客户端或`TransferManager`）将对象上传到 Amazon S3 时，可能会遇到网络连接或超时问题。默认情况下， 适用于 Java 的 AWS SDK 尝试重试传输失败的方法是在传输开始之前标记输入流，然后在重试之前对其进行重置。

如果直播不支持标记和重置，则当出现暂时性故障并启用重试[ResetException](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/ResetException.html)时，SDK 会抛出。

 **最佳实践** 

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

避免 a 的最可靠方法[ResetException](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/ResetException.html)是使用[文件](https://docs.oracle.com/javase/8/docs/api/index.html?java/io/File.html)或来提供数据 [FileInputStream](https://docs.oracle.com/javase/8/docs/api/index.html?java/io/FileInputStream.html)，它们 适用于 Java 的 AWS SDK 可以在不受标记和重置限制的限制的情况下处理这些数据。

如果直播不是，[FileInputStream](https://docs.oracle.com/javase/8/docs/api/index.html?java/io/FileInputStream.html)但支持标记和重置，则可以使用`setReadLimit`方法设置标记限制[RequestClientOptions](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/RequestClientOptions.html)。其默认值为 128KB。将读取限制值设置为*比流大小大一个字节*将可靠地避免 [ResetException](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/ResetException.html).

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