翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
署名付き URL の使用
トピック
署名付き URL には、有効期限切れ日時など、追加の情報も含まれており、コンテンツへのアクセスをより詳細に制御できます。この追加情報は、既定ポリシーまたはカスタムポリシーに基づくポリシーステートメントに含まれます。既定ポリシーとカスタムポリシーの違いを以下の 2 つのセクションで説明します。
注記
既定ポリシーを使用して一部の署名付き URL を作成し、同じディストリビューションで、カスタムポリシーを使用して一部の署名付き URL を作成することができます。
署名付き URL の既定ポリシーとカスタムポリシーの選択
署名付き URL を作成する場合、URL の有効期間など、署名付き URL で制限を指定する JSON 形式のポリシーステートメントを作成します。既定ポリシーまたはカスタムポリシーのいずれかを使用できます。既定ポリシーとカスタムポリシーの比較を以下に示します。
説明 | 既定ポリシー | カスタムポリシー |
---|---|---|
ポリシーステートメントを複数のファイル用に再利用できる。ポリシーステートメントを再利用するには、 |
いいえ |
はい |
ユーザーがコンテンツへのアクセスを開始できる日時を指定できる。 |
いいえ |
はい (オプション) |
ユーザーがコンテンツにアクセスできなくなる日時を指定できる。 |
はい |
はい |
コンテンツにアクセスできるユーザーの IP アドレスまたは IP アドレス範囲を指定できる。 |
いいえ |
はい (オプション) |
署名付き URL にポリシーの base64 エンコードされたバージョンが含まれているため、URL が長くなる。 |
いいえ |
はい |
既定ポリシーを使用して署名付き URL を作成する方法については、「既定ポリシーを使用する署名付き URL の作成」を参照してください。
カスタムポリシーを使用して署名付き URL を作成する方法については、「カスタムポリシーを使用する署名付き URL の作成」を参照してください。
署名付き URL の仕組み
ここでは、署名URLs 用に CloudFront と Amazon S3 を設定する方法と、ユーザーが署名付き URL を使用してファイルをリクエストしたときの の CloudFront 応答の概要を示します。
-
CloudFront ディストリビューションで、1 つ以上の信頼されたキーグループを指定します。このグループには、 CloudFront が URL 署名の検証に使用できるパブリックキーが含まれています。対応するプライベートキーを使用して URL に署名します。
詳細については、「署名付き URL と署名付き Cookie を作成できる署名者の指定」を参照してください。
-
アプリケーションを開発して、ユーザーがコンテンツへのアクセス許可を持つかどうかを決定し、アプリケーションでアクセスを制限するファイルまたは部分用に署名付き URL を作成するかを決定します。詳細については、以下のトピックを参照してください。
-
署名付き URL を必要とするファイルをユーザーが要求します。
-
アプリケーションは、ファイルにアクセスするための資格がユーザーにあることを検証します。たとえば、ユーザーがサインインしていること、コンテンツへのアクセス料を支払っていること、他のいくつかのアクセス要件を満たしていることを検証します。
-
アプリケーションは署名付き URL を作成してエンドユーザーに返します。
-
署名付き URL を使用すると、ユーザーはコンテンツのダウンロードやストリーミングができます。
このステップは自動で実行されます。ユーザーは、コンテンツにアクセスする以外に、何も行う必要はありません。たとえば、ユーザーがウェブブラウザでコンテンツにアクセスすると、アプリケーションは署名付き URL をブラウザに返します。ブラウザはすぐに署名付き URL を使用して、ユーザーからの介入なしに CloudFront エッジキャッシュ内のファイルにアクセスします。
-
CloudFront はパブリックキーを使用して署名を検証し、URL が改ざんされていないことを確認します。署名が無効である場合、リクエストは拒否されます。
署名が有効な場合、 は URL のポリシーステートメント CloudFront を調べ (既定ポリシーを使用している場合はポリシーステートメントを作成します)、リクエストがまだ有効であることを確認します。例えば、URL に開始日時と終了日時を指定した場合、 は、アクセスを許可する期間中にユーザーがコンテンツにアクセスしようとしている CloudFront ことを確認します。
リクエストがポリシーステートメントの要件を満たしている場合、 は標準オペレーション CloudFront を実行します。 は、ファイルがエッジキャッシュに既に存在するかどうかを判断し、必要に応じてリクエストをオリジンに転送して、そのファイルをユーザーに返します。
注記
署名なし URL にクエリ文字列パラメータが含まれている場合は、署名する URL にそれらのパラメータを含めてください。URL への署名後にその URL にクエリ文字列を追加すると、HTTP 403 ステータスが返されます。
署名付き URL の有効期間の選択
短期間 (おそらく数分) のみ有効な署名付き URL を使用してプライベートコンテンツを配信できます。このような短期間有効な署名付き URLs は、映画のレンタルや音楽のダウンロードon-the-fly をオンデマンドで顧客に配信するなど、特定の目的でコンテンツをユーザーに配信するのに適しています。署名付き URL を短期間だけ有効にする場合、開発したアプリケーションを使用して、署名付き URL を自動生成することが必要になる場合があります。ユーザーがファイルのダウンロードを開始するか、メディアファイルの再生を開始すると、 CloudFront は URL の有効期限を現在の時刻と比較し、URL がまだ有効かどうかを判断します。
これよりも有効期間の長い (おそらく数年間の) 署名付き URL を使用して、プライベートコンテンツを配信できます。有効期間の長い署名付き URL は、プライベートコンテンツを既知のユーザーに配信する場合に役立ちます。たとえば、事業計画を投資家に配信したり、教育資料を従業員に配信したりする場合に役立ちます。これらの長期的な署名付き URL を生成するアプリケーションを開発できます。
は、署名付き URL の有効期限日時をいつ CloudFront 確認しますか?
CloudFront は、HTTP リクエスト時に署名付き URL の有効期限日時を確認します。有効期限切れ時刻の直前にクライアントが大きなファイルのダウンロードを開始した場合、ダウンロード中に有効期限切れ時刻が経過してもダウンロードは完了します。TCP 接続が中断し、有効期限切れ時刻が経過した後にクライアントがダウンロードを再開した場合、ダウンロードは失敗します。
クライアントが、ファイルを断片的に取得するレンジ GET を使用した場合、有効期限切れ時刻が経過した後に実行された GET リクエストは失敗します。レンジ GET の詳細については、「がオブジェクトの部分リクエスト CloudFront を処理する方法 (範囲 GETs)」を参照してください。
サンプルコードおよびサードパーティーツール
署名付き URL の、ハッシュ化および署名されたパートを作成するサンプルコードについては、以下のトピックを参照してください。