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

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

Amazon S3 はドメインネームシステム (DNS) を使用して、リクエストを処理できる施設にルーティングします。このシステムは有効に機能しますが、一時的なルーティングエラーが発生する場合があります。 リクエストが誤った Amazon S3 ロケーションに到達した場合、Amazon S3 は、リクエストを新しいエンドポイントに再送するようリクエスタに指示する一時的なリダイレクトを返します。 リクエストの形式が正しくない場合、Amazon S3 は恒久的なリダイレクトを使用して、リクエストを正しく実行する方法について指示します。

重要

この機能を使用するには、Amazon S3 リダイレクトレスポンスを処理できるアプリケーションが必要です。唯一の例外は、<CreateBucketConfiguration> なしで作成されたバケットのみを使用するアプリケーションです。ロケーションの制約の詳細については、「バケットへのアクセス」を参照してください。

DNS ルーティング

DNS ルーティングは、リクエストを適切な Amazon S3 施設にルーティングします。以下の図とステップは、DNS ルーティングの例を示しています。

DNS サーバーでクライアントから施設 B にリクエストをルーティングするときのステップを示す図

DNS ルーティングリクエストのステップ

  1. クライアントが、Amazon S3 に格納されているオブジェクトを取得するために DNS リクエストを行います。

  2. クライアントが、リクエストを処理できる施設の 1 つまたは複数の IP アドレスを受け取ります。この例で、IP アドレスは施設 B のものです。

  3. クライアントが、Amazon S3 施設 B へのリクエストを行います。

  4. 施設 B が、オブジェクトのコピーをクライアントに返します。

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

一時的なリダイレクトとは、リクエストを異なるエンドポイントに再送する必要があることをリクエスタに知らせる一種のエラーレスポンスです。 Amazon S3 が持つ分散型の特質により、リクエストが誤った施設に一時的にルーティングされる場合があります。このエラーは、大半の場合にバケットが作成または削除された直後に発生します。

たとえば、新しいバケットを作成し、ただちにバケットへのリクエストを実行する場合、バケットのロケーションの制約によっては一時的にリダイレクトされる可能性もあります。AWS リージョンの 米国東部(バージニア北部) にバケットを作成した場合、これはデフォルトの Amazon S3 エンドポイントでもあるため、そのバケットへのリクエストはリダイレクトされることはありません。

一方、その他のリージョンにバケットを作成した場合、バケットの DNS エントリは伝播されますが、バケットに対するリクエストはデフォルトのエンドポイントに転送されます。デフォルトのエンドポイントは、リクエストを正しいエンドポイントにリダイレクトし、HTTP 302 レスポンスを返します。一時的なリダイレクトには正しい施設への URI が含まれており、これを使用して直ちにリクエストを再送できます。

重要

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

以下の図とステップは、一時的なリダイレクトの例を示しています。

 クライアントから B に送信したリクエストが C にリダイレクトされるステップを示す図

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

  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 の一時的なリダイレクトレスポンス

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 を使用することをお勧めします。

<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>