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

既定ポリシーを使用して署名付き URL を作成する

既定ポリシーを使用して署名付き URL を作成するには、次の手順を実行します。

既定ポリシーを使用して署名付き URL を作成するには

  1. .NET または Java を使用して署名付き URL を作成しており、キーペアのプライベートキーをデフォルトの .pem 形式から .NET または Java 対応の形式に変更していない場合は、それを変換します。詳細については、「CloudFront プライベートキーの形式を変更する (.NET および Java のみ) 」を参照してください。

  2. 以下の値を指定の順序で連結し、 (タブと改行文字を含めて) パート間の空白文字を削除します。アプリケーションコード内の文字列にエスケープ文字を含めることが必要になる場合があります。すべての値は文字列型です。各パートの番号 ( 1 ) は以下の 2 つの例の番号に対応します。

     1 オブジェクトのベース URL

    ベース URL は、署名付き URL を使用しなかった場合にオブジェクトへのアクセスに使用する CloudFront URL であり、独自のクエリ文字列パラメータを含みます (ある場合)。ウェブディストリビューション用の URL 形式の詳細については、「オブジェクトの URL の形式」を参照してください。

    以下の例は、ウェブディストリビューションで指定する値を示しています。

    • 以下の CloudFront URL は、ウェブディストリビューション内のオブジェクトの URL です (CloudFront ドメイン名を使用)。image.jpgimages ディレクトリにあります。URL 内のオブジェクトへのパスは、HTTP サーバーまたは Amazon S3 バケットのオブジェクトへのパスに一致する必要があります。

      http://d111111abcdef8.cloudfront.net/images/image.jpg

    • 以下の CloudFront URL には、クエリ文字列が含まれます。

      http://d111111abcdef8.cloudfront.net/images/image.jpg?size=large

    • 以下の CloudFront URL は、ウェブディストリビューション内のオブジェクトの URL です。両方の URL で代替ドメイン名が使用されており、2 番目の URL にはクエリ文字列が含まれています。

      http://www.example.com/images/image.jpg

      http://www.example.com/images/image.jpg?color=red

    • 以下の CloudFront URL は、代替ドメイン名と HTTPS プロトコルを使用するウェブディストリビューション内のオブジェクトの URL です。

      https://www.example.com/images/image.jpg

    以下の例は、RTMP ディストリビューションの場合の、2 つの異なるビデオ形式 (MP4 と FLV) のオブジェクトの例です。

    • MP4mp4:sydney-vacation.mp4

    • FLVsydney-vacation

    • FLVsydney-vacation.flv

    注記

    .flv ファイルの場合、.flv ファイル名拡張子を含めるかどうかは、使用するプレーヤーによって決まります。MP3 オーディオファイルまたは H.264/MPEG-4 ビデオファイルを供給するには、ファイル名の先頭にプレフィックス mp3: または mp4: を追加することが必要になる場合があります。メディアプレーヤーによっては、プレフィックスを自動で追加するように構成できます。メディアプレーヤーがファイル拡張子のないファイル名の指定を要求する場合もあります (例: sydney-vacation.mp4 ではなく sydney-vacation)。

     2 ?

    ? は、クエリ文字列パラメータがベース URL の後に続いていることを示します。独自のクエリ文字列パラメータがない場合も ? を含めます。

     3 クエリ文字パラメータ (ある場合) &

    この値はオプションです。独自のクエリ文字列パラメータ、たとえば次のクエリ文字列パラメータを追加すると仮定します。

    color=red&size=medium

    この場合、? ( 2 を参照) の後、かつ Expires パラメータの前にこのパラメータを追加します。特定のまれな状況では、Key-Pair-Id の後にクエリ文字列パラメータを配置する必要があります。

    重要

    パラメータに ExpiresSignature、または Key-Pair-Id という名前を付けることはできません。

    独自のパラメータを追加する場合は、最後のパラメータを含め、各パラメータの後に & を付加します。

     4 Expires=Unix 時間形式 (秒単位) および協定世界時 (UTC) の日時

    有効期限切れ日時を Unix 時間形式 (秒単位) および協定世界時 (UTC) で指定します。たとえば、UTC の 2013 年 1 月 1 日午前 10 時 00 分は、Unix 時間形式の 1357034400 に変換されます。UTC の詳細については、「RFC 3339、インターネットでの日付と時間: タイムスタンプ」 (http://tools.ietf.org/html/rfc3339) を参照してください。

    該当の URL によるオブジェクトへのアクセスを禁止する日時を指定します。Unix 時間形式 (秒単位) および協定世界時 (UTC) で表されます。たとえば、UTC の 2013 年 1 月 1 日午前 10 時 00 分は、Unix 時間形式の 1357034400 に変換されます。

     5 &Signature=ハッシュ化および署名されたバージョンのポリシーステートメント

    ハッシュ化され、署名された base64 エンコードバージョンの JSON ポリシーステートメント。詳細については、「既定ポリシーを使用する署名付き URL の署名の作成」を参照してください。

     6 &Key-Pair-Id=署名の生成に使用するキーペアに対する有効な CloudFront キーペア ID

    アクティブな CloudFront キーペアの ID (APKA9ONS7QCOWEXAMPLE など)。CloudFront キーペア ID は、署名付き URL の検証に使用するパブリックキーを CloudFront に指示します。CloudFront は、署名内の情報をポリシーステートメント内の情報と比較して、URL が改ざんされていないことを確認します。

    CloudFront 署名付き URL に含めるキーペア ID は、いずれかの信頼された署名者の有効なキーペア ID である必要があります。

    • ウェブディストリビューション – キーペアは、該当のキャッシュ動作に対するいずれかの信頼された署名者の AWS アカウントに関連付けられる必要があります。

    • RTMP ディストリビューション – キーペアは、ディストリビューションに対するいずれかの信頼された署名者の AWS アカウントに関連付けられる必要があります。

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

    署名付き URL をプログラムで生成しており、CloudFront キーペアを更新している間にキーペアを無効にした場合、いずれかの信頼された署名者の新しい有効なキーペアを使用するようにアプリケーションを更新する必要があります。署名付き URL を手動で生成している場合は、新しい署名付き URL を作成する必要があります。キーペアの更新の詳細については、「CloudFront キーペアを更新する」を参照してください。

ウェブディストリビューションの署名付き URL の例。

1 http://d111111abcdef8.cloudfront.net/image.jpg 2 ? 3 color=red&size=medium& 4 Expires=1357034400 5 &Signature=nitfHRCrtziwO2HwPfWw~yYDhUF5EwRunQA-j19DzZrvDh6hQ73lDx~-ar3UocvvRQVw6EkC~GdpGQyyOSKQim-TxAnW7d8F5Kkai9HVx0FIu-5jcQb0UEmatEXAMPLE3ReXySpLSMj0yCd3ZAB4UcBCAqEijkytL6f3fVYNGQI6 6 &Key-Pair-Id=APKA9ONS7QCOWEXAMPLE

RTMP ディストリビューションの署名付き URL の例。

1 videos/mediafile.flv 2 ? 3 color=red&size=medium& 4 Expires=1357034400 5 &Signature=nitfHRCrtziwO2HwPfWw~yYDhUF5EwRunQA-j19DzZrvDh6hQ73lDx~-ar3UocvvRQVw6EkC~GdpGQyyOSKQim-TxAnW7d8F5Kkai9HVx0FIu-5jcQb0UEmatEXAMPLE3ReXySpLSMj0yCd3ZAB4UcBCAqEijkytL6f3fVYNGQI6 6 &Key-Pair-Id=APKA9ONS7QCOWEXAMPLE

既定ポリシーを使用する署名付き URL の署名の作成

既定ポリシーを使用する署名付き URL の署名を作成するには、以下の手順を実行します。

  1. ポリシーステートメントを作成します。「既定ポリシーを使用する署名付き URL のポリシーステートメントの作成」を参照してください。

  2. ポリシーステートメントに署名して、署名を作成します。「既定ポリシーを使用する署名付き URL の署名の作成」を参照してください。

既定ポリシーを使用する署名付き URL のポリシーステートメントの作成

既定ポリシーを使用して署名付き URL を作成する場合、Signature パラメータは、ポリシーステートメントのハッシュ化および署名されたバージョンです。カスタムポリシーを使用する署名付き URL とは異なり、既定ポリシーを使用する署名付き URL では、URL にポリシーステートメントを含めません。ポリシーステートメントを作成するには、以下の手順を実行します。

既定ポリシーを使用する署名付き URL のポリシーステートメントを作成するには

  1. 以下の JSON 形式および UTF-8 文字エンコードを使用してポリシーステートメントを構築します。すべての句読点および他のリテラル値を、指定されたとおりに正確に含めます。Resource および DateLessThan パラメータの詳細については、「既定ポリシーを使用する署名付き URL のポリシーステートメントで指定する値」を参照してください。

    Copy
    { "Statement":[ { "Resource":"base URL or stream name", "Condition":{ "DateLessThan":{ "AWS:EpochTime":ending date and time in Unix time format and UTC } } } ] }
  2. ポリシーステートメントからすべての空白文字 (タブと改行文字を含む) を削除します。アプリケーションコード内の文字列にエスケープ文字を含めることが必要になる場合があります。

既定ポリシーを使用する署名付き URL のポリシーステートメントで指定する値

既定ポリシーのポリシーステートメントを作成する場合、以下の値を指定します。

リソース

指定する値は、ウェブディストリビューションまたは RTMP ディストリビューションのどちらの署名付き URL を作成しているかによって異なります。

注記

Resource の日付形式は 1 つだけ指定できます。

ウェブディストリビューション

クエリ文字列 (ある場合) が含まれるベース URL。ただし、CloudFront の ExpiresSignature、および Key-Pair-Id パラメータが除外されます。次に例を示します。

http://d111111abcdef8.cloudfront.net/images/horizon.jpg?size=large&license=yes

次の点に注意してください。

  • プロトコル – 値は http:// または https:// で始まっている必要があります。

  • クエリ文字列パラメータ – クエリ文字列パラメータがない場合は、疑問符を省略します。

  • 代替ドメイン名 – URL で代替ドメイン名 (CNAME) を指定する場合は、ウェブページまたはアプリケーション内のオブジェクトを参照するときに代替ドメイン名を指定する必要があります。オブジェクトの Amazon S3 URL を指定しないでください。

RTMP ディストリビューション

ストリーム名のみを含めます。たとえば、ストリーミングビデオの完全 URL が次のような URL であったとします。

rtmp://s5c39gqb8ow64r.cloudfront.net/videos/cfx/st/mp3_name.mp3

この場合、Resource には次の値を使用します。

videos/mp3_name

mp3:mp4: などのプレフィックスを含めないでください。また、使用するプレーヤーによっては、Resource の値からファイル拡張子を省略することが必要になる場合があります。たとえば、sydney-vacation.flv の代わりに sydney-vacation を使用することが必要になる場合があります。

DateLessThan

URL の有効期限切れ日時。Unix 時間形式 (秒単位) および協定世界時 (UTC) で指定します。たとえば、UTC の 2013 年 1 月 1 日午前 10 時 00 分は、Unix 時間形式の 1357034400 に変換されます。

この値は、署名付き URL 内の Expires クエリ文字列パラメータの値と一致する必要があります。値を引用符で囲まないでください。

詳細については、「CloudFront が署名付き URL 内の有効期限切れ日時を確認するタイミング」を参照してください。

既定ポリシーを使用する署名付き URL のポリシーステートメントの例

署名付き URL 内の既定ポリシーの以下のポリシーステートメントの例を使用すると、ユーザーは、UTC の 2013 年 1 月 1 日午前 10 時 00 分までオブジェクト http://d111111abcdef8.cloudfront.net/horizon.jpg にアクセスできます。

Copy
{ "Statement":[ { "Resource":"http://d111111abcdef8.cloudfront.net/horizon.jpg?size=large&license=yes", "Condition":{ "DateLessThan":{ "AWS:EpochTime":1357034400 } } } ] }

既定ポリシーを使用する署名付き URL の署名の作成

署名付き URL の Signature パラメータの値を作成するには、「既定ポリシーを使用する署名付き URL のポリシーステートメントの作成」で作成したポリシーステートメントをハッシュ化して署名します。この手順には 2 つのバージョンがあります。該当する手順を実行してください。

ポリシーステートメントのハッシュ化、署名、およびエンコードを行う方法の詳細および例については、以下の各資料を参照してください。

オプション 1: 既定ポリシーを使用して、ウェブディストリビューションまたは RTMP ディストリビューション (Adobe Flash Player を使用しない) の署名を作成する

  1. 既定ポリシーを使用する署名付き URL のポリシーステートメントを作成するには」の手順で作成したポリシーステートメントを、SHA-1 ハッシュ関数と RSA を使用してハッシュ化し、署名します。空白を含まないバージョンのポリシーステートメントを使用します。

    ハッシュ関数で必要とされるプライベートキーについては、該当する有効な信頼済み署名者に関連付けられたプライベートキーを使用します。

    注記

    ポリシーステートメントをハッシュ化および署名するための方法は、プログラミング言語およびプラットフォームによって異なります。サンプルコードについては、「署名付き URL の署名を作成するためのコード例」を参照してください。

  2. ハッシュ化および署名された文字列から、空白文字 (タブや改行文字を含む) を削除します。

  3. MIME base64 エンコーディングを使用して文字列を Base64 エンコードします。詳細については、『RFC 2045, MIME (Multipurpose Internet Mail Extensions) Part One: Format of Internet Message Bodies』の「Section 6.8, Base64 Content-Transfer-Encoding」を参照してください。

  4. URL クエリ文字列内の無効な文字を有効な文字で置き換えます。次の表に無効な文字と有効な文字を示します。

    無効な文字 (置換元) 有効な文字 (置換先)

    +

    - (ハイフン)

    =

    _ (下線)

    /

    ~ (チルダ)

  5. 結果の値を署名付き URL の &Signature= の後に付加し、「既定ポリシーを使用して署名付き URL を作成するには」に戻って、署名付き URL の各パートの連結を終了します。

オプション 2: 既定ポリシーを使用して RTMP ディストリビューションの署名を作成する (Adobe Flash Player)

  1. 既定ポリシーを使用する署名付き URL のポリシーステートメントを作成するには」の手順で作成した RSA ポリシーステートメントを、SHA-1 ハッシュ関数と RSA を使用してハッシュ化し、署名します。空白を含まないバージョンのポリシーステートメントを使用します。

    ハッシュ関数で必要とされるプライベートキーについては、該当する有効な信頼済み署名者に関連付けられたプライベートキーを使用します。

    注記

    ポリシーステートメントをハッシュ化および署名するための方法は、プログラミング言語およびプラットフォームによって異なります。サンプルコードについては、「署名付き URL の署名を作成するためのコード例」を参照してください。

  2. ハッシュ化および署名された文字列から、空白文字 (タブや改行文字を含む) を削除します。

    Adobe Flash Player を使用しており、ストリーム名がウェブページから渡される場合は、引き続きステップ 3 に進みます。

    Adobe Flash Player を使用しており、ストリーム名がウェブページから渡されない場合は、この手順の残りをスキップします。たとえば、ストリーム名を Adobe Flash .swf ファイル内からフェッチする独自のプレーヤーを作成した場合は、この手順の残りをスキップします。

  3. MIME base64 エンコーディングを使用して文字列を Base64 エンコードします。詳細については、『RFC 2045, MIME (Multipurpose Internet Mail Extensions) Part One: Format of Internet Message Bodies』の「Section 6.8, Base64 Content-Transfer-Encoding」を参照してください。

  4. URL クエリ文字列内の無効な文字を有効な文字で置き換えます。次の表に無効な文字と有効な文字を示します。

    無効な文字 (置換元) 有効な文字 (置換先)

    +

    - (ハイフン)

    =

    _ (下線)

    /

    ~ (チルダ)

  5. Adobe Flash Player の一部のバージョンでは、?、=、および & を URL エンコードすることが要求されます。使用している Adobe Flash Player のバージョンがこの文字の置換を要求するかどうかについては、Adobe ウェブサイトを参照してください。

    使用している Flash のバージョンがこれらの文字の URL エンコードを要求しない場合は、このステップをスキップしてステップ 6 に進んでください。

    使用している Flash のバージョンがこれらの文字の URL エンコードを要求する場合は、次の表に示されたとおりに文字を置き換えます。 (= については、前のステップですでに置き換えられています)。

    無効な文字 (置換元) URL エンコード (置換先)

    ?

    %3F

    &

    %26

  6. 結果の値を署名付き URL の &Signature= の後に付加し、「既定ポリシーを使用して署名付き URL を作成するには」に戻って、署名付き URL の各パートの連結を終了します。