

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 Amazon S3
<a name="examples-s3"></a>

本節提供使用 使用 Amazon S3 的背景資訊 AWS SDK for Java 2.x。本節補充本指南[程式碼範例一節中呈現的 Amazon S3 Java v2](java_s3_code_examples.md) *範例*。

## 中的 S3 用戶端 AWS SDK for Java 2.x
<a name="s3-clients"></a>

 AWS SDK for Java 2.x 提供不同類型的 S3 用戶端。下表顯示差異，並可協助您決定最適合使用案例的方案。


**Amazon S3 用戶端的不同口味**  

| S3 用戶端 | 簡短描述 | 使用情況 | 限制/回撥 | 
| --- | --- | --- | --- | 
| **AWS CRT 型 S3 用戶端**<br />介面：[S3AsyncClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/s3/S3AsyncClient.html)<br />建置器：[S3CrtAsyncClientBuilder](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/s3/S3AsyncClient.html) | +  提供與 Java 型 S3 非同步用戶端相同的非同步 API 操作，但效能更高。 <br />+  需要 `aws-crt` 相依性。 <br />+  支援自動平行傳輸 （分段）。 請參閱 [使用高效能 S3 用戶端： AWS CRT 型 S3 用戶端](crt-based-s3-client.md)。 |  +  您的應用程式會傳輸大型物件 (> 8MB)，而您想要將效能最大化。 <br />+  您想要上傳內容長度不明的物件。 <br />+  您想要增強型連線集區和 DNS 負載平衡，以改善輸送量和效能。 <br />+  您想要在網路故障時改善傳輸可靠性。系統會重試個別失敗的組件，而不會從頭重新開始傳輸。   |  +  相較於 Java 型 S3 用戶端，支援[較少的組態設定](crt-based-s3-client.md#crt-based-s3-client-limitations)。 <br />+  需要額外的相依性。   | 
| **啟用分段*的* Java 型 S3 非同步用戶端**<br />介面：[S3AsyncClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/s3/S3AsyncClient.html)<br />Builder：[S3AsyncClientBuilder](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/s3/S3AsyncClientBuilder.html) | +  提供非同步 API。 <br />+  當您在建立時啟用分段時， 支援自動平行傳輸 （分段）。 請參閱 [將 Java 型 S3 非同步用戶端設定為使用平行傳輸](s3-async-client-multipart.md)。 |  +  您的應用程式會傳輸大型物件，而您想要改善效能。 <br />+  您想要上傳內容長度不明的物件。 <br />+  您想要在網路故障時改善傳輸可靠性。系統會重試個別失敗的組件，而不會從頭重新開始傳輸。 <br />+  您需要 CRT AWS 型 S3 用戶端無法使用的[組態選項](crt-based-s3-client.md#crt-based-s3-client-limitations)。   | 效能低於 AWS CRT 型 S3 用戶端。 | 
| ***未*啟用分段的 Java 型 S3 非同步用戶端**<br />介面：[S3AsyncClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/s3/S3AsyncClient.html)<br />Builder：[S3AsyncClientBuilder](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/s3/S3AsyncClientBuilder.html) |  +  提供非同步 API。   |  +  您正在傳輸小於 8MB 的物件。 <br />+  您想要非同步 API。   | 無效能最佳化。 | 
| **Java 型 S3 同步用戶端**<br />介面：[S3Client](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/s3/S3Client.html)<br />Builder：[S3ClientBuilder](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/s3/S3ClientBuilder.html) |  +  提供同步 API。   |  +  您正在傳輸小於 8MB 的物件。 <br />+  您想要同步 API。   | 無效能最佳化。 | 

**注意**  
從 2.18.x 版及更新版本開始， AWS SDK for Java 2.x 會在包含端點覆寫時使用[虛擬託管樣式定址](https://docs.aws.amazon.com/AmazonS3/latest/userguide/VirtualHosting.html#virtual-hosted-style-access)。只要儲存貯體名稱是有效的 DNS 標籤，這就適用。  
在用戶端建置器`true`中使用 呼叫 [`forcePathStyle`](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/s3/S3BaseClientBuilder.html#forcePathStyle(java.lang.Boolean)方法，強制用戶端使用儲存貯體的路徑樣式定址。  
下列範例顯示使用端點覆寫和路徑樣式定址設定的服務用戶端。  

```
S3Client client = S3Client.builder()
                          .region(Region.US_WEST_2)
                          .endpointOverride(URI.create("https://s3.us-west-2.amazonaws.com"))
                          .forcePathStyle(true)
                          .build();
```

**Topics**
+ [開發套件中的 S3 用戶端](#s3-clients)
+ [將串流上傳至 S3](best-practices-s3-uploads.md)
+ [預先簽章URLs](examples-s3-presign.md)
+ [跨區域存取](s3-cross-region.md)
+ [使用檢查總和保護資料完整性](s3-checksums.md)
+ [使用高效能 S3 用戶端](crt-based-s3-client.md)
+ [設定平行傳輸支援](s3-async-client-multipart.md)
+ [傳輸檔案和目錄](transfer-manager.md)
+ [S3 事件通知](examples-s3-event-notifications.md)