

 適用於 Java 的 AWS SDK 1.x 已於 2025 年 12 月 31 日end-of-support。我們建議您遷移至 [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>

當您 Amazon S3 使用串流 （透過 `AmazonS3`用戶端或 `TransferManager`) 將物件上傳至 時，您可能會遇到網路連線或逾時問題。根據預設， 適用於 Java 的 AWS SDK 嘗試重試失敗的傳輸，方法是在傳輸開始之前標記輸入串流，然後在重試之前重設它。

如果串流不支援標記和重設，當發生暫時性失敗並啟用重試時，開發套件會擲回 [ResetException](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/ResetException.html)。

 **最佳實務** 

我們建議您使用支援標記和重設操作的串流。

避免 [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)，但確實支援標記和重設，您可以使用 [RequestClientOptions](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/RequestClientOptions.html) `setReadLimit`的方法設定標記限制。其預設值為 128 KB。將讀取限制值設定為*大於串流大小的一個位元組*，可以可靠地避免 [ResetException](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/ResetException.html)。

例如，如果串流的預期大小上限為 100，000 個位元組，請將讀取限制設定為 100，001 (100，000 \$1 1) 個位元組。標記和重設一律適用於 100，000 個位元組或更少的位元組。請注意，這可能會導致某些串流緩衝記憶體中的位元組數。