メニュー
Amazon Simple Storage Service
開発者ガイド (API Version 2006-03-01)

リクエストのリダイレクトと REST API

概要

Amazon S3 はドメインネームシステム(DNS)を使用して、リクエストを処理できる施設にルーティングします。このシステムは非常に効果的に機能します。ただし、一時的なルーティングエラーが発生する場合があります。

リクエストが誤った Amazon S3 ロケーションに到達した場合、Amazon S3 は、リクエストを新しいエンドポイントに再送するようリクエスタに指示する一時的なリダイレクトを返します。

リクエストの形式が正しくない場合、Amazon S3 は恒久的なリダイレクトを使用して、リクエストを正しく実行する方法について指示します。

重要

各 Amazon S3 プログラムは、リダイレクトレスポンスを処理するよう設計する必要があります。唯一の例外は、<CreateBucketConfiguration> なしで作成されたバケットのみを使用するプログラムの場合です。ロケーションの制約の詳細については、バケットへのアクセス を参照してください。

DNS ルーティング

DNS ルーティングは、リクエストを適切な Amazon S3 施設にルーティングします。

次の図は、DNS ルーティングの例を示しています。

1 クライアントが、Amazon S3 に格納されているオブジェクトを取得するために DNS リクエストを行います。
2 クライアントが、リクエストを処理できる施設の 1 つまたは複数の IP アドレスを受け取ります。
3 クライアントが、Amazon S3 施設 B へのリクエストを行います。
4 施設 B がオブジェクトのコピーを返します。

一時的なリクエストのリダイレクト

一時的なリダイレクトとは、リクエストを異なるエンドポイントに再送する必要があることをリクエスタに知らせるタイプのエラーレスポンスです。

Amazon S3 が持つ分散型の特質により、リクエストが誤った施設に一時的にルーティングされる場合があります。このエラーは、大半の場合にバケットが作成または削除された直後に発生します。例えば、新しいバケットを作成し、ただちにバケットへのリクエストを実行する場合、バケットのロケーションの制約によっては一時的にリダイレクトされる可能性もあります。米国東部 (バージニア北部) リージョン (s3.amazonaws.com エンドポイント) にバケットを作成した場合は、リダイレクトされません。このリージョンがデフォルトのエンドポイントであるためです。これに対し、その他のリージョンにバケットを作成した場合、バケットに対するリクエストはこのデフォルトのエンドポイントに転送されますが、バケットの DNS エントリは伝播されます。デフォルトのエンドポイントは、HTTP 302 レスポンスを表示すると共に、リクエストを正しいエンドポイントにリダイレクトします。

一時的なリダイレクトには正しい施設への URI も含まれており、これを使用して直ちにリクエストを再送することができます。

重要

以前のリダイレクトレスポンスで指定されたエンドポイントを再度使用しないでください。こうしたエンドポイントは(長期間でも)機能するように見えますが、予期せぬ結果を招くことがあり、最終的には通知なしに失敗します。

次の図は、一時的なリダイレクトの例を示しています。

1 クライアントが、Amazon S3 に格納されているオブジェクトを取得するために DNS リクエストを行います。
2 クライアントが、リクエストを処理できる施設の 1 つまたは複数の IP アドレスを受け取ります。
3 クライアントが、Amazon S3 施設 B へのリクエストを行います。
4 施設 B がリダイレクトを返して、オブジェクトがロケーション C から利用可能であることを示します。
5 クライアントがリクエストを施設 C に再送します。
6 施設 C がオブジェクトのコピーを返します。

恒久的なリクエストのリダイレクト

恒久的なリダイレクトは、リクエストがリソースのアドレス指定を不適切に行ったことを示します。例えば、パス形式のリクエストを使用して、<CreateBucketConfiguration> によって作成されたバケットにアクセスした場合、恒久的なリダイレクトが発生します。詳細については、「バケットへのアクセス」を参照してください。

開発中にこれらのエラーを見つけやすいように、このタイプのリダイレクトには、リクエストを正しいロケーションに自動的に送信するためのロケーション HTTP ヘッダーが含まれていません。正しい Amazon S3 エンドポイントを使用するために、生成される XML エラードキュメントを参照してください。

例 REST API のリダイレクト

Copy
HTTP/1.1 307 Temporary Redirect Location: http://johnsmith.s3-gztb4pa9sq.amazonaws.com/photos/puppy.jpg?rk=e2c69a31 Content-Type: application/xml Transfer-Encoding: chunked Date: Fri, 12 Oct 2007 01:12:56 GMT Server: AmazonS3 <?xml version="1.0" encoding="UTF-8"?> <Error> <Code>TemporaryRedirect</Code> <Message>Please re-send this request to the specified temporary endpoint. Continue to use the original request endpoint for future requests.</Message> <Endpoint>johnsmith.s3-gztb4pa9sq.amazonaws.com</Endpoint> </Error>

例 SOAP API のリダイレクト

注記

SOAP のサポートは HTTP 経由では廃止されましたが、HTTPS 経由では引き続き利用可能です。SOAP 用に Amazon S3 の新機能をサポートする予定はありません。REST API か AWS SDK を使用することをお勧めします。

Copy
<soapenv:Body> <soapenv:Fault> <Faultcode>soapenv:Client.TemporaryRedirect</Faultcode> <Faultstring>Please re-send this request to the specified temporary endpoint. Continue to use the original request endpoint for future requests.</Faultstring> <Detail> <Bucket>images</Bucket> <Endpoint>s3-gztb4pa9sq.amazonaws.com</Endpoint> </Detail> </soapenv:Fault> </soapenv:Body>