

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

# Amazon S3 的跨區域存取
<a name="s3-cross-region"></a>

當您使用 Amazon Simple Storage Service (Amazon S3) 儲存貯體時，您通常知道儲存貯體 AWS 區域 的 。您使用的區域會在您建立 S3 用戶端時決定。

不過，有時您可能需要使用特定儲存貯體，但您不知道它是否位於為 S3 用戶端設定的相同區域中。

您可以使用 SDK 來啟用跨不同區域的 S3 儲存貯體存取權，而不是進行更多呼叫來判斷儲存貯體區域。

## 設定
<a name="s3-cross-region-setup"></a>

跨區域存取的支援隨 SDK `2.20.111` 版本提供。在 Maven 建置檔案中使用此版本或更新版本做為`s3`相依性，如下列程式碼片段所示。

```
<dependency>
  <groupId>software.amazon.awssdk</groupId>
  <artifactId>s3</artifactId>
  <version>2.27.21</version>
</dependency>
```

接著，當您建立 S3 用戶端時，請啟用跨區域存取，如程式碼片段所示。根據預設，不會啟用存取。

```
S3AsyncClient client = S3AsyncClient.builder()
                                    .crossRegionAccessEnabled(true)
                                    .build();
```

## 開發套件如何提供跨區域存取
<a name="s3-cross-region-routing"></a>

當您在請求中參考現有的儲存貯體時，例如當您使用 `putObject`方法時，軟體開發套件會對為用戶端設定的 區域啟動請求。

如果儲存貯體不存在於該特定區域中，則錯誤回應會包含儲存貯體所在的實際區域。開發套件接著會在第二個請求中使用正確的區域。

為了最佳化對相同儲存貯體的未來請求，開發套件會在用戶端中快取此區域映射。

## 考量事項
<a name="s3-cross-region-considerations"></a>

當您啟用跨區域儲存貯體存取時，請注意，如果儲存貯體不在用戶端設定的區域中，第一個 API 呼叫可能會導致延遲增加。不過，後續呼叫會受益於快取的區域資訊，進而改善效能。

當您啟用跨區域存取時，對儲存貯體的存取不會受到影響。使用者必須獲得授權，才能在其所在的任何區域中存取儲存貯體。