Amazon S3 のクロスリージョンアクセス - AWS SDK for Java 2.x

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon S3 のクロスリージョンアクセス

Amazon Simple Storage Service (Amazon S3) バケットで作業をする場合、通常そのバケットの AWS リージョン を知っています。使用するリージョンは、S3 クライアントの作成時に決定されます。

ただし、特定のバケットを操作する必要があったとしても、そのバケットが S3 クライアントに設定されているのと同じリージョンにあるかどうかわからない場合があります。

バケットのリージョンを特定するためにさらに呼び出しを行う代わりに、SDK を使用してさまざまなリージョンの S3 バケットにアクセスできるようにすることができます。

設定

クロスリージョンアクセスに関するサポートは、SDK のバージョン 2.20.111 で利用可能になりました。次のスニペットに示すように、Maven ビルドファイルの s3 依存関係には、このバージョンまたはそれ以降のバージョンを使用します。

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

次に、S3 クライアントを作成するときに、スニペットに示すようにクロスリージョンアクセスを有効にします。デフォルトでは、アクセスは有効になっていません。

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

SDK がクロスリージョンアクセスを提供する方法

putObject メソッドを使用する場合など、リクエストで既存のバケットを参照すると、SDK はクライアント用に設定されたリージョンへのリクエストを開始します。

その特定のリージョンにバケットが存在しない場合、エラーレスポンスにはバケットが存在する実際のリージョンが含まれます。その後、SDK は 2 回目のリクエストで正しいリージョンを使用します。

同じバケットへの今後のリクエストを最適化するために、SDK はこのリージョンマッピングをクライアントにキャッシュします。

考慮事項

クロスリージョンバケットアクセスを有効にする場合、バケットがクライアントの設定済みリージョンにない場合、最初の API コールでレイテンシーが増加する可能性があることに注意してください。ただし、それ以降のコールではキャッシュされたリージョン情報が有効になるため、パフォーマンスが向上します。

クロスリージョンアクセスを有効にする場合、バケットへのアクセスには影響しません。ユーザーは、そのバケットが存在するリージョンに関係なく、バケットにアクセスする権限を持っている必要があります。