メニュー
Amazon CloudFront
開発者ガイド (API Version 2016-09-29)

署名付き URL の使用

署名付き URL には、有効期限切れ日時など、追加の情報も含まれており、コンテンツへのアクセスをより詳細に制御できます。この追加情報は、既定ポリシーまたはカスタムポリシーに基づくポリシーステートメントに含まれます。既定ポリシーとカスタムポリシーの違いを以下の 2 つのセクションで説明します。

Note

同じディストリビューションで、一部の署名付き URL を既定ポリシーを使用して作成し、一部の署名付き URL をカスタムポリシーを使用して作成することができます。

既定ポリシーとカスタムポリシーの選択(署名付き URL)

署名付き URL を作成する場合、URL の有効期間など、署名付き URL で制限を指定する JSON 形式のポリシーステートメントを作成します。既定ポリシーまたはカスタムポリシーのいずれかを使用できます。既定ポリシーとカスタムポリシーの比較を以下に示します。

説明既定ポリシーカスタムポリシー

ポリシーステートメントを複数のオブジェクト用に再利用できる。ポリシーステートメントを再利用するには、Resource オブジェクトでワイルドカード文字を使用する必要があります。詳細については、「カスタムポリシーを使用する署名付き URL のポリシーステートメントで指定する値」を参照してください。

いいえ

はい

ユーザーがコンテンツへのアクセスを開始できる日時を指定できる。

いいえ

はい(オプション)

ユーザーがコンテンツにアクセスできなくなる日時を指定できる。

はい

はい

コンテンツにアクセスできるユーザーの IP アドレスまたは IP アドレス範囲を指定できる。

いいえ

はい(オプション)

署名付き URL にポリシーの base64 エンコードされたバージョンが含まれているため、URL が長くなる。

いいえ

はい

既定ポリシーを使用して署名付き URL を作成する方法については、「既定ポリシーを使用して署名付き URL を作成する」を参照してください。

カスタムポリシーを使用して署名付き URL を作成する方法については、「カスタムポリシーを使用して署名付き URL を作成する」を参照してください。

署名付き URL の仕組み

署名付き URL 用の CloudFront と Amazon S3 の設定方法と、ユーザーが署名付き URL を使用してオブジェクトをリクエストするときの CloudFront の応答方法の概要を次に示します。

  1. CloudFront ディストリビューションで、1 件以上の信頼された署名者を指定します。これは、署名付き URL の作成許可が与えられる AWS アカウントです。

    詳細については、「署名付き URL と署名付き Cookie(信頼された署名者)の作成が可能な AWS アカウントの指定」を参照してください。

  2. アプリケーションを開発して、ユーザーがコンテンツへのアクセス権限を持つかどうかを決定し、アプリケーションでアクセスを制限するオブジェクトまたは部分用に署名付き URL を作成するかを決定します。詳細については、該当するトピックを参照してください。

  3. 署名付き URL を必要とするオブジェクトをユーザーが要求します。

  4. アプリケーションは、オブジェクトにアクセスするための資格がユーザーにあることを検証します。たとえば、ユーザーがサインインしていること、コンテンツへのアクセス料を支払っていること、他のいくつかのアクセス要件を満たしていることを検証します。

  5. アプリケーションは署名付き URL を作成してエンドユーザーに返します。

  6. 署名付き URL を使用すると、ユーザーはコンテンツのダウンロードやストリーミングができます。

    このステップは自動で実行されます。ユーザーは、コンテンツにアクセスする以外に、何も行う必要はありません。たとえば、ユーザーがウェブブラウザでコンテンツにアクセスすると、アプリケーションは署名付き URL をブラウザに返します。ブラウザは、直ちに、署名付き URL を使用して CloudFront エッジキャッシュ内のオブジェクトにアクセスします。ユーザーからの介入はありません。

  7. CloudFront はパブリックキーを使用して署名を検証し、URL が改ざんされていないことを確認します。署名が無効である場合、リクエストは拒否されます。

    署名が有効である場合、CloudFront は URL のポリシーステートメントを参照して(または既定ポリシーを使用している場合はポリシーステートメントを作成して)、リクエストがまだ有効であることを確認します。たとえば、URL の開始日時と終了日時を指定した場合、CloudFront は、アクセスが許可されている期間にユーザーがコンテンツへのアクセスを試みていることを確認します。

    リクエストがポリシーステートメントの要件を満たしている場合、CloudFront は標準の操作を実行します。つまり、オブジェクトがエッジキャッシュにすでに存在するかどうかを確認し、必要に応じてリクエストをオリジンに転送して、オブジェクトをユーザーに返します。

署名付き URL の有効期間の選択

短期間(おそらく数分)のみ有効な署名付き URL を使用してプライベートコンテンツを配信できます。このように短期間有効な署名付き URL は、限定された目的で、コンテンツをユーザーにオンザフライで配信する場合に適しています。たとえば、映画レンタルや音楽ダウンロードをカスタマーにオンデマンドで配信する場合に適しています。署名付き URL を短期間だけ有効にする場合、開発したアプリケーションを使用して、署名付き URL を自動生成することが必要になる場合があります。ユーザーがオブジェクトのダウンロードまたはメディアファイルの再生を開始すると、CloudFront は、URL 内の有効期限切れ時刻と現在の時刻を比較して、URL が依然として有効かどうかを判別します。

これよりも有効期間の長い(おそらく数年間の)署名付き URL を使用して、プライベートコンテンツを配信できます。有効期間の長い署名付き URL は、プライベートコンテンツを既知のユーザーに配信する場合に役立ちます。たとえば、事業計画を投資家に配信したり、教育資料を従業員に配信したりする場合に役立ちます。この長い期間の署名付き URL を自動で生成するアプリケーションを開発するか、プライベートコンテンツの設定ツールとコード例 に示されたサードパーティ GUI ツールの 1 つを使用できます。

CloudFront が署名付き URL 内の有効期限切れ日時を確認するタイミング

CloudFront が署名付き URL 内の有効期限切れ日時を確認し、URL が依然として有効であるかどうかを判別するタイミングは、URL がウェブディストリビューション用または RTMP ディストリビューション用のどちらであるかによって異なります。

  • ウェブディストリビューション – CloudFront は、HTTP リクエスト時に署名付き URL 内の有効期限切れ日時を確認します。有効期限切れ時刻の直前にクライアントが大きなオブジェクトのダウンロードを開始した場合、ダウンロード中に有効期限切れ時刻が経過してもダウンロードは完了します。TCP 接続が中断し、有効期限切れ時刻が経過した後にクライアントがダウンロードを再開した場合、ダウンロードは失敗します。

    クライアントが、オブジェクトを断片的に取得するレンジ GET を使用した場合、有効期限切れ時刻が経過した後に実行された GET リクエストは失敗します。レンジ GET の詳細については、「CloudFront がオブジェクトの部分的リクエスト(レンジ GET)を処理する方法」を参照してください。

  • RTMP ディストリビューション – CloudFront は、再生イベントの開始時に署名付き URL 内の有効期限切れ時刻を確認します。有効期限切れ時刻が経過する前にクライアントがメディアファイルの再生を開始した場合、CloudFront はメディアファイル全体の再生を許可します。ただし、メディアプレーヤーによっては、一時停止および再開によって別の再生イベントがトリガーされる場合があります。メディアファイル内の別の場所へのスキップによって別の再生イベントがトリガーされます。有効期限切れ時刻が経過した後、以降の再生イベントが発生した場合、CloudFront はメディアファイルを供給しません。

サンプルコードおよびサードパーティツール

署名付き URL の、ハッシュ化および署名されたパートを作成するサンプルコードについては、以下のトピックを参照してください。

署名付き URL を作成するその他のサンプルコードは、Amazon CloudFront のサンプルコード & ライブラリ ページで取得できます。

署名付き URL の作成を含め、プライベートコンテンツをサポートするサードパーティツールの詳細については、「プライベートコンテンツの設定ツールとコード例」を参照してください。