3. 便利な機能を追加する

3 of 7

このページは、Fastly CDN 導入ガイドの一部です。同ガイドは、Webサイトとドメイン名の例を使って Fastly CDN の使用方法を分かりやすく解説するステップバイステップのチュートリアルです。このチュートリアルでは、静的サイト生成ツールの Jekyll、Amazon AWS、Fastly CDN を使用して静的Webサイトをキャッシュ・配信する手順をご紹介します。詳細については、こちらをご覧ください。

前のセクションでは、Fastly サービスを作成し、ドメインとオリジンホスト名を追加し、Fastly サービス設定を有効にしました。また、curl コマンドラインユーティリティを使用して、Fastly が Web サイトをキャッシュしていることを確認し、さらに、安全なプレビュードメイン名を作成しました。

ドメインに違いがなければ、ここでやめることもできます。ですが、まだまだ活用できるたくさんの機能があります。Fastly は、Web サイトをキャッシュするだけではありません。

このセクションでは、Fastly のサービスに利用できる優れた機能をいくつかご紹介します。例えば、特定のタイプのリクエストに対してシンセティックレスポンスを提供するように Fastly を設定したり、アセットの圧縮を有効にしたり、ストリーミングログエンドポイントを設定して、誰が Web サイトを訪問したかを確認したりすることができます。

シンセティックレスポンスを設定する

Fastly がオリジンからエラーコードを受け取ったとき、またはリクエストが条件に一致したときに、シンセティックレスポンスを提供するように Fastly を設定することができます。これは、404 ページや、robots.txt の場合に特に便利です。Fastly では、よくあるレスポンスに対するクイック設定がいくつか提供されていますが、HTTP のステータスコードや条件に基づいてカスタカスタムレスポンスを設定することもできます。詳細については、レスポンスチュートリアルをご覧ください。このチュートリアルの後半で、条件について説明します。

404 ページおよび robots.text ページ向けにシンセティックレスポンスを設定してみましょう。Edit configuration をクリックしてサービスを複製し、新しいドラフトバージョンを作成します。次に、Content ページで、以下に示されているように 404 ページrobots.txt の横にある On スイッチをクリックします。Save をクリックする前に、デフォルトのレスポンスを編集することができます。

シンセティックレスポンスを設定する

Activate をクリックして、サービス設定の新しいバージョンを有効にします。ここで、https://tacolabs.global.ssl.fastly.net/robots.txt にアクセスすると、 robots.txt のシンセティックレスポンスが表示されます。

オリジンシールドを有効にする

デフォルトでは、以下のように、Fastly POP は、オリジンサーバーから直接リソースをプルします。すべての POP が個別にオリジンからリソースを取得する必要があるため、キャッシュが蓄積されるまでに時間がかかることがあります。オリジンへのトラフィックの急増は一時的なものであり、キャッシュに入力されている間しか続きません。

オリジンシールドを無効化した Fastly のしくみ動を示す図

この方法でも機能しますが、Fastly ではキャッシュに入力するためのより効率的な方法が提供されています。オリジンシールド機能では、単一の POP を指定して、オリジンへのすべてのリクエストを処理することができます。以下に示されているように、オリジンシールドを有効にすることで、オリジンへのリクエストがオリジンシールド POP から確実に来るようにして、オリジンの負担を軽減し、Web ホストにかかるコストを削減できます。

ヒント

この機能を有効にする前に、オリジンシールドドキュメントを必ずご覧ください。オリジンシールドは、トラフィック、ヒット率、およびパフォーマンスに影響します。

オリジンシールドを有効化した Fastly のしくみを示す図

Taco Labs でオリジンシールドを有効にしましょう。Edit configuration をクリックしてサーバーを複製し、新しいドラフトバージョンを作成します。次に、Origin ページで、オリジンの名前をクリックして、オリジンの設定を編集します。「Edit this host」ページで、以下のように、シールド POP を選択します。ここでは、AWS リージョンに最も近い POP であることから、Chicago (MDW) を選択しますus-east-2Update をクリックすると変更内容が保存されます。

Fastly コントロールパネルのオリジンシールドインターフェイス

ヒント

一般的に、オリジンに近い POP を選択することをお勧めします。これにより、Fastly がシールド POP とエッジ POP (リクエストを行ったユーザーに近いPOP) 間のリクエストを最適化するため、より高速なコンテンツ配信が可能になります。オリジンに近い POP の場所を選択するために、AWS および Google Cloud Services (GCS) の複数のリストを提供しています。詳細については、オリジンシールドの場所の選択に関するドキュメントをご覧ください。

これで有効化できます!Activate をクリックして、サービス設定の新しいバージョンを有効にします。

ヘッダーを確認する

サービスにオリジンシールドを有効化しましたが、機能しているかどうかを判断するにはどうすればよいでしょうか?HTTP ヘッダーをもう一度確認してみましょう。端末アプリケーションを開き、次のコマンドを入力します:

$ curl -svo /dev/null -H "Fastly-Debug:1" https://tacolabs.global.ssl.fastly.net

出力では、以下のように表示されます:

1< X-Served-By: cache-mdw17347-MDW, cache-bur17582-BUR
2< X-Cache: MISS, MISS
3< X-Cache-Hits: 0, 0

2つのキャッシュノードが X-Served-By ヘッダーに表示されているため、オリジンシールドが有効化されているのがわかります。X-Cache ヘッダー (MISS, MISS) は、オブジェクトがシールドやエッジノードのキャッシュになかったことを意味しており、Fastly はオリジンサーバーから Web サイトのコンテンツをフェッチしています。次に curl コマンドの実行や Web サイトの読み込みを行うときには、Fastly はキャッシュから Web サイトを読み込みます。

ヒント

X-Cache ヘッダーに含まれる可能性のあるその他の値についての詳細は、オリジンシールドのデバッグドキュメントをご覧ください。

圧縮を使用する

Taco Labs は静的 Web サイトですが、圧縮によってパフォーマンスを向上させることができます。訪問者の Web ブラウザに送信される前に圧縮することで、アセットのサイズを縮小することができ、Web サイトの配信を効果的にスピードアップできます。Fastly コントロールパネルでこの機能を有効にすると、Fastly はオリジンから動的にコンテンツを取得し、圧縮して、キャッシュします。

Edit configuration をクリックしてサーバーを複製し、新しいドラフトバージョンを作成しましょう。次に、Content ページで、以下のように Default compression policy の横にある On スイッチをクリックします。

Fastly コントロールパネルで圧縮設定を有効にする

ヒント

デフォルトの設定で、最もよく使用されるファイルタイプが圧縮されるため、ほとんどの Web サイトではこれで十分です。特定のファイルタイプを圧縮する必要がある場合は、高度な圧縮ポリシーを設定することができます。

これで、Activate ボタンをクリックして、サービス設定を有効にすることができます。

Web サイトをパージする

圧縮を有効化しましたが、Web サイトをテストして、正常に圧縮されているかどうかをテストすることはまだできません。その理由は、先程有効化したオリジンフィールドに関係があります。シールド POP が Web サイトの非圧縮バージョンをキャッシュしているため、Web サイトの新しい圧縮バージョンはまだ有効化されていません。シールド POP や他のすべてのキャッシュノードが、Web サイトのキャッシュされたバージョンを削除して、新しい圧縮されたバージョンの Web サイトをフェッチしたかどうかを確認するにはどうすればいいのでしょうか?

つまり、パージのことです。提供されているパージメソッドのうちの1つを使用することで、Web サイトのコンテンツの一部または全部をキャッシュからパージするよう Fastly に指示することができます。パージは、Web サイトのコンテンツを変更する必要がある度に毎回必要となります。例えば、ブログ記事のタイトルを更新した場合、新しいタイトルを表示するには、ブログ記事の URL をパージする必要があります。また、Web サイトの各ページに表示されるロゴを更新する場合にも、画像の URL をパージする必要があります。

パージはコストがかかるため、変更したコンテンツのみをパージすることをお勧めします。よりターゲットを絞ったパージオプションについては、このチュートリアルの後半で説明します。ここでは、すべてのアセットに影響する可能性のある大きな変更を実施したため、purge all を使用します。このメソッドは、Fastly のキャッシュノードからすべての Web サイトのコンテンツをパージします。

では、コンテンツのすべてをパージしましょう。画面の上部にある Deliver クリックし、Service summary をクリックします。次に、以下のように、Purge メニューから Purge all を選択します。

Fastly コントロールパネルを使用してすべてのコンテンツをパージする

これで以前の圧縮されていないバージョンがパージされたため、Web サイトが効果的に圧縮を使用しているかどうかを確認することができます。Google の PageSpeed Insights を使用して、圧縮のステータスを確認することができます。Web サイトに対するテキスト圧縮の有効化の監査にパスしている場合、圧縮が正常に機能していることを意味します。これで完璧です!

ログを有効化する

イベントとトラフィックのログは、Web サイトとアプリケーションをモニタリングする上で非常に重要です。CDN を使用する場合、トラフィックをログする方法を変更する必要があります。Fastly の使用開始後、オリジンへのすべてのトラフィックは Fastly から発生します。引き続きサイト訪問者を収集するには、Fastly のリアルタイムログストリーミング機能を使用して、ログストリーミングのエンドポインを設定する必要があります。

Fastly のリアルタイムログストリーミング機能は、さまざまなサードパーティサービスとの統合が可能です。当社のログに関するドキュメントには、サポートされているサービスの一覧が記載されています。Fastly サービスを、1つまたは複数のログエンドポイントに接続することができます。

2種類のログを理解する

このチュートリアルでは、Amazon S3 と Papertrail の 2 つのログエンドポイントを設定します。これらのサービスには、機能に若干の違いがあります。Amazon S3 では、Fastly はログをバッチし、Amazon S3 バケットのファイルに1時間ごとに書き込みます。これは、リアルタイム分析に必要とされないログファイルを保存する場合に、コスト効率の高い方法となります。

一方、Papertrail はストリーミングログファイルに特化しています。Fastly のリアルタイムログストリーミング機能と組み合わせて使用すると、リアルタイムで更新するファイルを追跡できるようになります。画面全体にログのスクロールが表示され、検索機能を使用して、特定のログエントリーを探すことができます。

Amazon S3 ログストリーミングの設定と問題のトラブルシューティング

Amazon S3 ログストリーミングエンドポイントを設定するには、ログに新しい S3 バケットを作成し、Fastly ドキュメントに記載されている Amazon S3 エンドポイントの設定の手順に従います。設定は、フォームに入力し、新しいサービス設定を有効化するだけで簡単にできます。

Fastly は、ログのエンドポイントに関する問題のトラブルシューティングに使用できるツールを複数提供しています。まず、Fastly コントロールパネルにログインします。Fastly がログをログエンドポイントに送信しようとして失敗した場合、以下のようなエラーメッセージがコントロールパネルに表示されます。

Fastly コントロールパネルに表示された Amazon S3 のログエラー

このエラーは、(Advanced オプションにある) Domain フィールドのデフォルト値を変更するのを忘れていたことが原因でした。正式なホスト名は、S3 バケットが配置されている AWS リージョンによって異なります。ここでは、us-east-2のリージョンを使用しているため、デフォルトのホスト名 (s3.amazonaws.com) を s3.us-east-2.amazonaws.com に変更する必要があります。AWS のリージョンコードの全リストは、AWS の Web サイトに掲載されています。

Fastly は、1時間ごとに S3 バケットにログを書き込むため、S3 バケットにログが表示されるまでしばらく時間がかかることがあります。最終的に、以下のように複数の新しいログファイルが表示されます。ログファイルの書き込み先の変更に関するドキュメントを参照し、ファイル名の変更方法と、ファイルの書き込み先をコントロールする方法を確認してください。

Amazon S3 バケットに表示された Fastly のログファイル

AWS コントロールパネルを使用して、ファイルを開くことができます。以下はログファイルからの抜粋です。ログのストリーミングに関するドキュメントには、ログ形式と変数に関する詳細が記載されています。

{ "timestamp":"2021-08-23T16:32:15", "client_ip":"73.127.172.124", "geo_country":"united states", "geo_city":"albuquerque", "url":"/tacos", "request_referer":"https://tacolabs.global.ssl.fastly.net/base-layers/", "request_user_agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36", "fastly_is_edge":true, "response_state":"HIT", "response_status":302, "response_reason":"Moved Temporarily", "response_body_size":313, "request_method":"GET", "request_protocol":"HTTP/1.1", "fastly_server":"cache-phx12422-PHX", "host":"tacolabs.global.ssl.fastly.net" }
{ "timestamp":"2021-08-23T16:32:15", "client_ip":"73.127.172.124", "geo_country":"united states", "geo_city":"albuquerque", "url":"/favicon.ico", "request_referer":"https://tacolabs.global.ssl.fastly.net/tacos/", "request_user_agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36", "fastly_is_edge":true, "response_state":"PASS", "response_status":403, "response_reason":"Forbidden", "response_body_size":303, "request_method":"GET", "request_protocol":"HTTP/1.1", "fastly_server":"cache-phx12422-PHX", "host":"tacolabs.global.ssl.fastly.net" }

Papertrailログストリーミングを設定する

Papertrailは、初めてログ機能を使用する場合に便利なオールインワンサービスです。S3 はログファイルを保持するだけで、ファイルを使って何かをすることはありませんが、Papertrail は、リアルタイムのログと分析専用に構築されています。Papertrail アカウントを作成し、Fastly コントロールパネルで Papertrail のログエンドポイントを設定すると、以下のように Papertrail のインターフェースにログイベントがリアルタイムでスクロール表示されます。

Papertrail のストリーミングログ

Papertrail には、ログを読みやすくするための機能があります。例えば Papertrail では、ログエントリータイプのグループ化、ログの検索、特定タイプのイベントに関するアラートの設定などが可能です。

また、Papertrail を設定して、ログをフィルターすることもできます。問題なく処理された静的アセット (CSS ファイルや画像など) のリクエストなどに関する行を削除することでログが簡素化され、4xx や 5xx のステータスコードが返されたリクエストのログ行に集中しやすくなります。これにより、問題の発見がはるかに簡単になります。


翻訳についての注意事項
このガイドは役に立ちましたか?

このフォームを使用して機密性の高い情報を送信しないでください。サポートが必要な場合は、サポートチームまでご連絡ください。このフォームは reCAPTCHA によって保護されており、Google のプライバシーポリシー利用規約が適用されます。