Amazon CloudFront +カスタムオリジン

約1年間、AmazonはCloudFrontサービスのカスタムオリジンサポートを追加しました。 私は長い間、さまざまなCDNに注目しています。

正直に言って、推定トラフィックが1か月あたり50〜100 GBを超えてはならない小さなプロジェクトや開始のために、現在CDNを見つけるのは困難です。 彼らは非常に高価であるか、大量のトラフィックを生成するサイトでのみ動作し、ほとんどすべてがプリペイドベースで動作します。 実際に使用したトラフィックに対して支払うのではなく、ある程度の金額に対しては解決できない場合があります。

この点で、Amazon CloudFrontは競合他社と比較して有利です。 ここでの料金は、実際に使用されたトラフィックに対してのみ請求され、GBあたり平均$ 0.15の地域にもよりますが、少額です。 ただし、CloudFrontをS3サービスと連携して使用する必要があり、コストが増加する前に、独自のサーバーをオリジンサーバーとして使用できるようになりました。

プロジェクトでCloudFrontサポートを接続、支払い、追加した方法について詳しく説明したいと思います。

お支払い


最初に、サービスに対する支払い方法と、この段階で直面した困難についてお話したいと思います。

ですから、私自身はウクライナ出身ですが、すべてまたは多くのCIS諸国にとって、この情報は重要だと思います。 Amazonで提供されている支払い方法は、クレジットカードによる支払いのみです。 つまり WebMoneyのような電子マネーは受け入れられません。 したがって、私は銀行に行ってクレジットカードを開かなければなりませんでした。 Avalを選択しましたが、ほとんどの場合銀行は重要ではありませんが、クレジットカード自体は重要です。 ドルVisa Classicを発見し、それを開いたときに、銀行の従業員に、このカードを使用して外国のカードでインターネットでの購入に対して支払うことができるかどうかを明確にしました。 カードを開くには10営業日かかりました。

今、私が遭遇した問題について:
1.カードのアクティベーション-ここで、私は少し自分でやったことを認めなければなりません。 銀行のキャッシュデスクを介してカードにお金を入れますが、ATMを介して何らかのアクションを実行すると(お金が既に存在しているはずですが)残高確認が行われます。 いずれにせよ、銀行でカードがどのように有効化されているかを銀行員に確認する価値があります。

2. CVV-アマゾンは、私をとても驚かせましたが、カードのCVVコードを要求しません。 登録時には、カード番号、有効期限、カード名義人の名前のみを入力する必要があります。 判明したように、AmazonはこのCVVが不要なスキームに従って動作しますが、支払い時または永続的に、CVVコードによるカードの保護を無効にする必要があります。 これは、銀行のコールセンターを介して電話で行うか、カードを開いた部門で明細書を作成して行います。

原則として、これらはすべて私の支払いで生じた問題です。

登録とキー


登録プロセスは、 CloudFrontページから開始できます。 登録は非常に簡単です。登録手順の1つで、カードに関する情報を入力する必要があり、検証に合格すると、アカウントが登録されます。 CloudFrontアカウントとともに、カスタムオリジンを使用する場合でも、S3サービスのアカウントが自動的に作成されます。

登録後、APIと通信し、ファイルの安全なURLを生成するために必要なキーを生成する必要があります。 これを行うには、アカウントのセキュリティ資格情報セクションに移動します。 ここには3つのタブがあります。
1.アクセスキー-このタブのデータは、APIへのリクエストの認証ヘッダーを生成するために必要です。

2. X.509証明書-SOAPを介したAPI要求のキー。

3.キーペア-安全なURLを生成するためのキー。

REST APIと通信するときの標準ヘッダー



すべてのREST APIリクエストには、次のヘッダーが必要です。
1. x-amz-date-リクエストの日付。 日付は、 RFC 2616仕様の「日付/時刻形式」セクションで説明されている形式のいずれかでなければなりません。

2. Content-Type-リクエストボディタイプ、通常は「application / xml」。

3. Content-Length-リクエスト本文の長さ。

4.承認-承認ヘッダーの構造は次のとおりです: "AWS aws_secret_key_id:signature"、ここで:
4.1 AWS-定数文字列とそれに続く空白文字。
4.2 aws_secret_key_id-アカウントの[アクセスキー]タブの[ セキュリティ認証情報]ページにあります。
4.3署名-x-amz-dateヘッダーで指定したリクエスト日とaws_secret_key_idが配置されているページにある秘密鍵に基づいて、sha1ハッシュアルゴリズムを使用して生成された検証署名。 以下は、署名を生成するPHPコードです。
  1. $signature = base64_encode ( hash_hmac ( 'sha1' , $requestDate , $awsSecretKey , true ) ) ;

配布



Amazon CloudFrontを介してファイルを配布する機会を得るには、Distributionを作成する必要があります。
1つのアカウントで、最大100個のDistributionを作成できます。1つのDistribution内のファイルの数は制限されていません。
配布には2つのタイプがあります。
1.ダウンロード-HTTPおよびHTTPSを介してファイルを配布します(HTTPSは少し高価です)。

2.ストリーム-RTMPプロトコルを介したビデオおよびオーディオファイルの配信用。 すぐに失望したいのですが、Streamタイプの配信はカスタムオリジンは機能せず 、オリジンサーバーとしてのS3でのみ機能します。

記事のタイトルと段落2に基づいて、ダウンロード配布のみを検討します。 新しいダウンロード配布を作成するためのXML要求の例をすぐに提供します。
<?xml version = "1.0" encoding = "UTF-8" ?> <DistributionConfig xmlns = "http://cloudfront.amazonaws.com/doc/2010-11-01/" > <CustomOrigin > <DNSName > www.example.com </DNSName > <HTTPPort > 80 </HTTPPort > <OriginProtocolPolicy > http-only </OriginProtocolPolicy > </CustomOrigin > <CallerReference > your unique caller reference </CallerReference > <CNAME > mysite.example.com </CNAME > <Comment > My comments </Comment > <Enabled > true </Enabled > <TrustedSigners > <Self /> </TrustedSigners > <Logging > <Bucket > mylogs.s3.amazonaws.com </Bucket > <Prefix > myprefix/ </Prefix > </Logging > </DistributionConfig >
  1. <?xml version = "1.0" encoding = "UTF-8" ?> <DistributionConfig xmlns = "http://cloudfront.amazonaws.com/doc/2010-11-01/" > <CustomOrigin > <DNSName > www.example.com </DNSName > <HTTPPort > 80 </HTTPPort > <OriginProtocolPolicy > http-only </OriginProtocolPolicy > </CustomOrigin > <CallerReference > your unique caller reference </CallerReference > <CNAME > mysite.example.com </CNAME > <Comment > My comments </Comment > <Enabled > true </Enabled > <TrustedSigners > <Self /> </TrustedSigners > <Logging > <Bucket > mylogs.s3.amazonaws.com </Bucket > <Prefix > myprefix/ </Prefix > </Logging > </DistributionConfig >
  2. <?xml version = "1.0" encoding = "UTF-8" ?> <DistributionConfig xmlns = "http://cloudfront.amazonaws.com/doc/2010-11-01/" > <CustomOrigin > <DNSName > www.example.com </DNSName > <HTTPPort > 80 </HTTPPort > <OriginProtocolPolicy > http-only </OriginProtocolPolicy > </CustomOrigin > <CallerReference > your unique caller reference </CallerReference > <CNAME > mysite.example.com </CNAME > <Comment > My comments </Comment > <Enabled > true </Enabled > <TrustedSigners > <Self /> </TrustedSigners > <Logging > <Bucket > mylogs.s3.amazonaws.com </Bucket > <Prefix > myprefix/ </Prefix > </Logging > </DistributionConfig >
  3. <?xml version = "1.0" encoding = "UTF-8" ?> <DistributionConfig xmlns = "http://cloudfront.amazonaws.com/doc/2010-11-01/" > <CustomOrigin > <DNSName > www.example.com </DNSName > <HTTPPort > 80 </HTTPPort > <OriginProtocolPolicy > http-only </OriginProtocolPolicy > </CustomOrigin > <CallerReference > your unique caller reference </CallerReference > <CNAME > mysite.example.com </CNAME > <Comment > My comments </Comment > <Enabled > true </Enabled > <TrustedSigners > <Self /> </TrustedSigners > <Logging > <Bucket > mylogs.s3.amazonaws.com </Bucket > <Prefix > myprefix/ </Prefix > </Logging > </DistributionConfig >
  4. <?xml version = "1.0" encoding = "UTF-8" ?> <DistributionConfig xmlns = "http://cloudfront.amazonaws.com/doc/2010-11-01/" > <CustomOrigin > <DNSName > www.example.com </DNSName > <HTTPPort > 80 </HTTPPort > <OriginProtocolPolicy > http-only </OriginProtocolPolicy > </CustomOrigin > <CallerReference > your unique caller reference </CallerReference > <CNAME > mysite.example.com </CNAME > <Comment > My comments </Comment > <Enabled > true </Enabled > <TrustedSigners > <Self /> </TrustedSigners > <Logging > <Bucket > mylogs.s3.amazonaws.com </Bucket > <Prefix > myprefix/ </Prefix > </Logging > </DistributionConfig >
  5. <?xml version = "1.0" encoding = "UTF-8" ?> <DistributionConfig xmlns = "http://cloudfront.amazonaws.com/doc/2010-11-01/" > <CustomOrigin > <DNSName > www.example.com </DNSName > <HTTPPort > 80 </HTTPPort > <OriginProtocolPolicy > http-only </OriginProtocolPolicy > </CustomOrigin > <CallerReference > your unique caller reference </CallerReference > <CNAME > mysite.example.com </CNAME > <Comment > My comments </Comment > <Enabled > true </Enabled > <TrustedSigners > <Self /> </TrustedSigners > <Logging > <Bucket > mylogs.s3.amazonaws.com </Bucket > <Prefix > myprefix/ </Prefix > </Logging > </DistributionConfig >
  6. <?xml version = "1.0" encoding = "UTF-8" ?> <DistributionConfig xmlns = "http://cloudfront.amazonaws.com/doc/2010-11-01/" > <CustomOrigin > <DNSName > www.example.com </DNSName > <HTTPPort > 80 </HTTPPort > <OriginProtocolPolicy > http-only </OriginProtocolPolicy > </CustomOrigin > <CallerReference > your unique caller reference </CallerReference > <CNAME > mysite.example.com </CNAME > <Comment > My comments </Comment > <Enabled > true </Enabled > <TrustedSigners > <Self /> </TrustedSigners > <Logging > <Bucket > mylogs.s3.amazonaws.com </Bucket > <Prefix > myprefix/ </Prefix > </Logging > </DistributionConfig >
  7. <?xml version = "1.0" encoding = "UTF-8" ?> <DistributionConfig xmlns = "http://cloudfront.amazonaws.com/doc/2010-11-01/" > <CustomOrigin > <DNSName > www.example.com </DNSName > <HTTPPort > 80 </HTTPPort > <OriginProtocolPolicy > http-only </OriginProtocolPolicy > </CustomOrigin > <CallerReference > your unique caller reference </CallerReference > <CNAME > mysite.example.com </CNAME > <Comment > My comments </Comment > <Enabled > true </Enabled > <TrustedSigners > <Self /> </TrustedSigners > <Logging > <Bucket > mylogs.s3.amazonaws.com </Bucket > <Prefix > myprefix/ </Prefix > </Logging > </DistributionConfig >
  8. <?xml version = "1.0" encoding = "UTF-8" ?> <DistributionConfig xmlns = "http://cloudfront.amazonaws.com/doc/2010-11-01/" > <CustomOrigin > <DNSName > www.example.com </DNSName > <HTTPPort > 80 </HTTPPort > <OriginProtocolPolicy > http-only </OriginProtocolPolicy > </CustomOrigin > <CallerReference > your unique caller reference </CallerReference > <CNAME > mysite.example.com </CNAME > <Comment > My comments </Comment > <Enabled > true </Enabled > <TrustedSigners > <Self /> </TrustedSigners > <Logging > <Bucket > mylogs.s3.amazonaws.com </Bucket > <Prefix > myprefix/ </Prefix > </Logging > </DistributionConfig >
  9. <?xml version = "1.0" encoding = "UTF-8" ?> <DistributionConfig xmlns = "http://cloudfront.amazonaws.com/doc/2010-11-01/" > <CustomOrigin > <DNSName > www.example.com </DNSName > <HTTPPort > 80 </HTTPPort > <OriginProtocolPolicy > http-only </OriginProtocolPolicy > </CustomOrigin > <CallerReference > your unique caller reference </CallerReference > <CNAME > mysite.example.com </CNAME > <Comment > My comments </Comment > <Enabled > true </Enabled > <TrustedSigners > <Self /> </TrustedSigners > <Logging > <Bucket > mylogs.s3.amazonaws.com </Bucket > <Prefix > myprefix/ </Prefix > </Logging > </DistributionConfig >
  10. <?xml version = "1.0" encoding = "UTF-8" ?> <DistributionConfig xmlns = "http://cloudfront.amazonaws.com/doc/2010-11-01/" > <CustomOrigin > <DNSName > www.example.com </DNSName > <HTTPPort > 80 </HTTPPort > <OriginProtocolPolicy > http-only </OriginProtocolPolicy > </CustomOrigin > <CallerReference > your unique caller reference </CallerReference > <CNAME > mysite.example.com </CNAME > <Comment > My comments </Comment > <Enabled > true </Enabled > <TrustedSigners > <Self /> </TrustedSigners > <Logging > <Bucket > mylogs.s3.amazonaws.com </Bucket > <Prefix > myprefix/ </Prefix > </Logging > </DistributionConfig >
  11. <?xml version = "1.0" encoding = "UTF-8" ?> <DistributionConfig xmlns = "http://cloudfront.amazonaws.com/doc/2010-11-01/" > <CustomOrigin > <DNSName > www.example.com </DNSName > <HTTPPort > 80 </HTTPPort > <OriginProtocolPolicy > http-only </OriginProtocolPolicy > </CustomOrigin > <CallerReference > your unique caller reference </CallerReference > <CNAME > mysite.example.com </CNAME > <Comment > My comments </Comment > <Enabled > true </Enabled > <TrustedSigners > <Self /> </TrustedSigners > <Logging > <Bucket > mylogs.s3.amazonaws.com </Bucket > <Prefix > myprefix/ </Prefix > </Logging > </DistributionConfig >
  12. <?xml version = "1.0" encoding = "UTF-8" ?> <DistributionConfig xmlns = "http://cloudfront.amazonaws.com/doc/2010-11-01/" > <CustomOrigin > <DNSName > www.example.com </DNSName > <HTTPPort > 80 </HTTPPort > <OriginProtocolPolicy > http-only </OriginProtocolPolicy > </CustomOrigin > <CallerReference > your unique caller reference </CallerReference > <CNAME > mysite.example.com </CNAME > <Comment > My comments </Comment > <Enabled > true </Enabled > <TrustedSigners > <Self /> </TrustedSigners > <Logging > <Bucket > mylogs.s3.amazonaws.com </Bucket > <Prefix > myprefix/ </Prefix > </Logging > </DistributionConfig >
  13. <?xml version = "1.0" encoding = "UTF-8" ?> <DistributionConfig xmlns = "http://cloudfront.amazonaws.com/doc/2010-11-01/" > <CustomOrigin > <DNSName > www.example.com </DNSName > <HTTPPort > 80 </HTTPPort > <OriginProtocolPolicy > http-only </OriginProtocolPolicy > </CustomOrigin > <CallerReference > your unique caller reference </CallerReference > <CNAME > mysite.example.com </CNAME > <Comment > My comments </Comment > <Enabled > true </Enabled > <TrustedSigners > <Self /> </TrustedSigners > <Logging > <Bucket > mylogs.s3.amazonaws.com </Bucket > <Prefix > myprefix/ </Prefix > </Logging > </DistributionConfig >
  14. <?xml version = "1.0" encoding = "UTF-8" ?> <DistributionConfig xmlns = "http://cloudfront.amazonaws.com/doc/2010-11-01/" > <CustomOrigin > <DNSName > www.example.com </DNSName > <HTTPPort > 80 </HTTPPort > <OriginProtocolPolicy > http-only </OriginProtocolPolicy > </CustomOrigin > <CallerReference > your unique caller reference </CallerReference > <CNAME > mysite.example.com </CNAME > <Comment > My comments </Comment > <Enabled > true </Enabled > <TrustedSigners > <Self /> </TrustedSigners > <Logging > <Bucket > mylogs.s3.amazonaws.com </Bucket > <Prefix > myprefix/ </Prefix > </Logging > </DistributionConfig >
  15. <?xml version = "1.0" encoding = "UTF-8" ?> <DistributionConfig xmlns = "http://cloudfront.amazonaws.com/doc/2010-11-01/" > <CustomOrigin > <DNSName > www.example.com </DNSName > <HTTPPort > 80 </HTTPPort > <OriginProtocolPolicy > http-only </OriginProtocolPolicy > </CustomOrigin > <CallerReference > your unique caller reference </CallerReference > <CNAME > mysite.example.com </CNAME > <Comment > My comments </Comment > <Enabled > true </Enabled > <TrustedSigners > <Self /> </TrustedSigners > <Logging > <Bucket > mylogs.s3.amazonaws.com </Bucket > <Prefix > myprefix/ </Prefix > </Logging > </DistributionConfig >
  16. <?xml version = "1.0" encoding = "UTF-8" ?> <DistributionConfig xmlns = "http://cloudfront.amazonaws.com/doc/2010-11-01/" > <CustomOrigin > <DNSName > www.example.com </DNSName > <HTTPPort > 80 </HTTPPort > <OriginProtocolPolicy > http-only </OriginProtocolPolicy > </CustomOrigin > <CallerReference > your unique caller reference </CallerReference > <CNAME > mysite.example.com </CNAME > <Comment > My comments </Comment > <Enabled > true </Enabled > <TrustedSigners > <Self /> </TrustedSigners > <Logging > <Bucket > mylogs.s3.amazonaws.com </Bucket > <Prefix > myprefix/ </Prefix > </Logging > </DistributionConfig >
  17. <?xml version = "1.0" encoding = "UTF-8" ?> <DistributionConfig xmlns = "http://cloudfront.amazonaws.com/doc/2010-11-01/" > <CustomOrigin > <DNSName > www.example.com </DNSName > <HTTPPort > 80 </HTTPPort > <OriginProtocolPolicy > http-only </OriginProtocolPolicy > </CustomOrigin > <CallerReference > your unique caller reference </CallerReference > <CNAME > mysite.example.com </CNAME > <Comment > My comments </Comment > <Enabled > true </Enabled > <TrustedSigners > <Self /> </TrustedSigners > <Logging > <Bucket > mylogs.s3.amazonaws.com </Bucket > <Prefix > myprefix/ </Prefix > </Logging > </DistributionConfig >

リクエストURLcloudfront.amazonaws.com/2010 –11–01 /配布
リクエスト方法 :POST

各タグの意味をさらに詳しく説明します。
1. CustomOriginは、オリジンサーバーのパラメーターが設定される領域です。
1.1 DNSName-ドメインオリジンサーバー。
1.2 HTTPPort-HTTP経由でオリジンサーバーにアクセスするためのポート。
1.3 OriginProtocolPolicy-Amazonは、オリジンサーバーからファイルを2つの方法でリクエストできます。httpのみ-常にHTTPプロトコルを使用、match-viewer-エンドユーザーがファイルのリクエストに使用したプロトコルを使用しますが、HTTPまたはHTTPSのみ。
2. CallerReference-リクエストの一意の識別子。数値でもアルファベットでもかまいません。主なものは一意です。
3. CNAME-ディストリビューションごとに、Amazonはcloudfront.netドメインのサブドメインを作成します。 このドメインでは、1つまたは複数のCNAMEをハングさせることができます。
4.コメント-配布用のコメント。
5.有効-配布がアクティブかどうかを設定します。
6. TrustedSigners-配布は、それらへのアクセスのタイプ(パブリックとプライベート)によっても分けられます。 誰もがパブリックディストリビューションのファイルにアクセスできます。プライベートファイルにアクセスするには、有効期限、IPアクセスなどを指定できる安全なURLを作成する必要があります。 プライベート配布を作成するには、このセクションを指定する必要があります。
7.ログ-クエリログパラメータを設定するセクション:
7.1バケット-AmazonはS3サービスを使用してログを保存するため、それらを使用する場合はS3に追加料金を支払う必要があります。 このパラメーターは、ログが保存されるS3バケットを設定します。
7.2接頭辞-ログ接頭辞、私が理解しているように、これはログのディレクトリのようなものです。

Distributionを作成した直後は、InProgressステータスになっていますが、ステータスをActiveに変更した後にのみ作業を開始できます。 通常、10〜15分かかります。 Distributionのステータスを確認するには、APIリクエストを使用してDistributionに関する情報を取得できます。

リクエストURLcloudfront.amazonaws.com/2010 –11–01 / distribution / distribution_id
リクエスト方法 :GET

distribution_id-Amazonは、Distributionを作成するリクエストの成功に応答して戻ります。

ファイルアップロード機能


それで、最も重要なことに到達しました-CDN経由でのファイルの返却です。 いくつかの機能があります。
1. Amazon CloudFrontは、CDN.Tからファイルがリクエストされたときに転送されたURLパラメーターをオリジンサーバーに送信しません。 e。エンドユーザーがファイルexample_sub_domain.cloudfront.net/image_1.jpg?param=valueを要求した場合、サーバーのオリジンからこのファイルを要求すると、「param = value」を受け取りませんが、ログには完全なURLが含まれます。

2. Distributionでファイルを更新します。 次の場合にファイルが要求される場合があります。
2.1 CloudFrontサーバー上にない場合;
2.2ファイルの有効期限が切れている場合。 有効期限は、ヘッダーを使用して制御できます:cache-control、expires、pragma。 デフォルトでは、ファイルは24時間キャッシュされます。
2.3 無効化リクエストを使用してDistributionからファイルが削除された場合。
エンドユーザーがファイルをリクエストした場合、Amazonは他のCDNが行うようにファイルの変更日をチェックしないことに注意してください。 ファイルを変更するときにAmazonサーバーが自動的にファイルを取得するようにする場合は、ファイル名にバージョンまたは変更日を指定する必要があります。

3.オリジン側のファイルの保護-オリジンサーバーとして独自のものを使用する場合(つまり、記事で説明する場合)Amazonは、オリジンサーバー上のファイルを不正アクセスから保護しません。このタスク完全に起源の所有者にあります。 ただし、同時に、Amazon自体がHTTPまたはHTTPSを介してこれらのファイルにアクセスできるように、ファイル保護を実装する必要があります。 同時に、Amazonはファイルをリクエストするときにデータを送信しません。これにより、リクエストは他のリクエストと区別されます。 これに基づいて、オリジンサーバー上のメンバーファイルを保護するための唯一のオプションがあります-IP保護。 次の形式の.htaccessでメンバーファイルを保護します。

  1. 注文 拒否許可
  2. すべて から 拒否


Amazonがファイルにアクセスできるように、次のルールを.htaccessに追加しました
  1. #Amazon CloudFront
  2. 216.137.60.0/ 23 から 許可


ここでマスク216.137.60.0/23を取りまし

公開URL


ファイルが次のオリジンサーバーで利用可能であると仮定します。

  1. origin.example.com/images/image_1.jpg


次に、Amazon CloudFrontを介して提供するには、次のURLを生成する必要があります。

  1. example_sub_domain.cloudfront.net/images/image_1.jpg


ここで、example_sub_domain.cloudfront.netは、origin.example.comの発信元に一致するそのDistributionのドメインです。

プライベートURL


プライベートURLは2つのタイプに分けられます。
1.缶詰-URLの有効期限のみを指定できます。
2.カスタム-URlが有効になる期間と、URLを使用できる1つ以上のIPアドレスを指定できます。

URLが有効になる日付のみが必要だったので、定型URLを生成する例を示します。

  1. 関数 getSignedUrl $ url
  2. {
  3. //有効期限を準備します
  4. $ expireDate = time + SECURE_URL_TIMEOUT ;
  5. // Cloudfrontプライベートキーペアを読み取ります
  6. $ fp = fopen CLOUD_FRONT_KEY_PAIR_PATH "r" ;
  7. $ privateKey = fread $ fp 8192 ;
  8. fclose $ fp ;
  9. //秘密鍵を作成します
  10. $ privateKey = openssl_get_privatekey $ privateKey ;
  11. if $ privateKey {
  12. falseを 返し ます
  13. }
  14. // JSONポリシーを準備します
  15. $ json = '{"Statement":[{"Resource": "' $ url '"、 "Condition":{"DateLessThan":{"AWS:EpochTime":' $ expireDate '}}}]}' ;
  16. //秘密鍵でポリシーに署名します
  17. if openssl_sign $ json $ signature $ privateKey OPENSSL_ALGO_SHA1 )) {
  18. falseを 返し ます
  19. }
  20. // URLセーフ署名ポリシーを作成します
  21. $ signature = str_replace array '+' '=' '/' array '-' '_' '〜' base64_encode $ signature ;
  22. // URLを構築します
  23. $ urlを 返します
  24. '?Expires =' $ expireDate
  25. '&Signature =' $署名
  26. '&Key-Pair-Id =' CLOUD_FRONT_KEY_PAIR_ID ;
  27. }


この関数は、次のパラメーターと定数を使用します。
1. $ urlは、http://example_sub_domain.cloudfront.net/images/image_1.jpgという形式のソースURLです。
2. SECURE_URL_TIMEOUT-URLのタイムアウト(秒単位)。
3. CLOUD_FRONT_KEY_PAIR_PATH-秘密キーへのパス。[キーペア]タブの[ セキュリティ資格情報]ページで生成できます。
4. CLOUD_FRONT_KEY_PAIR_ID-秘密キーの識別子。キー自体と同じ場所にあります。

この関数の出力はプライベートURLになります。これにより、エンドユーザーは、割り当てられたタイムアウトで、プライベートDistributionにあるコンテンツにアクセスできます。

便利なリンク


1. Amazon CloudFront-サービスのメインページ。
2. 開発者ガイド -CloudFrontサービスの詳細な説明。
3. APIリファレンス -CloudFrontサービスのREST APIドキュメント。
4. AWS SDK for PHP-すべてのAmazonサービスを操作するためのクラスを含むPHPライブラリ。 非常に便利なもの。
5. テストコード -テストプロセス中に作成した小さなコード。

PS


基本的に私が書きたかったのはこれだけです。 この記事は、CloudFrontのカスタムオリジンサーバーの使用に関する完全なガイドであるとは主張していませんが、S3を必要としない人にとって役立つことを願っています。 ご清聴ありがとうございました。

Source: https://habr.com/ru/post/J115911/


All Articles