6. 高度な設定

6 of 7

このページは、Fastly の CDN の説明の一部であり、Fastly の CDN の使用方法および Web サイトの例とドメイン名を示して段階的に説明するチュートリアルです。このチュートリアルでは、静的サイト生成ツールの Jekyll、Amazon AWS、Fastly CDN を使用して静的Webサイトをキャッシュ・配信する手順をご紹介します。詳細については、こちらをご覧ください。

ここでチュートリアルを終了することもできます。Fastly は Web サイトをキャッシュしています。TLS を使用して接続を保護し、ログでモニタリングしています。すべてがシームレスに機能しています。しかし、私たちの仕事はそれだけにとどまりません。

このセクションでは、日常的な Web サイトの問題と、この分野につきものの悩みに対処するヒントと役立つ情報をご紹介します。つまり、「高度な設定」です。ここでは、カスタム VCL によるリダイレクトの追加、API によるキャッシュのパージ、サロゲートキーを使用するパージについてご説明します。

VCL スニペットを使用してリダイレクトを追加する

コンテンツを削除するか、ファイルを名前を変更する場合は、古い URL を新しい URL にリダイレクトする必要があります。これにより、古いリンクが使用できなくなり、新しいリンクをインデックス化する必要があることを検索エンジンに伝えることができます。Fastly VCL スニペットを作成することで、Fastly サービスにリダイレクトを追加し、コードや Amazon S3 バケットに触れることなく、これらを有効化することができます。

ヒント

このセクションの指示は、リダイレクトに関するチュートリアルを参考にしています。VCL コードの詳しい説明については、そのドキュメントをご覧ください。

VCL スニペットを作成してリダイレクトをサポートします。最初のスニペットには、リダイレクトテーブルが含まれます。これには、リダイレクトしたい URL を追加します。他の2つのスニペットは、「設定したら忘れてもいい」ものです。作成した後、再び使用することはありません。1 つはインバウンドリクエストをリダイレクトテーブルに照らし合わせ、もう一つはリダイレクトレスポンスを生成します。

VCL テーブルとして保存されるリダイレクトのデータセットは、以下のようになります。

1table solution_redirects {
2 "/source1": "/dest1",
3 "/source2": "/dest2"
4}

これが Taco Labs とどのように連携するかを見てみましょう。Web サイトに、ビーフハードタコスのレシピがありました。これは、タコシェルが全国的に不足しているため、一時的に削除する必要がありました。そのレシピのファイルを削除し、古い URL (https://www.tacolabs.com/tacos/2021/05/15/beef-hard-tacos.html) をビーフソフトタコスのレシピページ (https://www.tacolabs.com/tacos/2021/07/02/beef-soft-tacos.html) にリダイレクトします。VCL テーブルは以下のようになります。

1table solution_redirects {
2 "/tacos/2021/05/15/beef-hard-tacos.html": "/tacos/2021/07/02/beef-soft-tacos.html"
3}

もちろん、コンテンツを削除し、ファイル名を変更すれば、、今後、このテーブルに URL を追加することができます。

Fastly コントロールパネルを使用して、あらゆる VCL スニペットを作成することができます。Edit configuration をクリックして、サービスを複製し、新しいドラフトバージョンを作成しましょう。VCL スニペットページで、Create snippet をクリックします。スニペットに名前を追加し、init タイプを選択して、以下のように VCL を入力します。

Fastly コントロールパネルで VCL スニペットを作成する

Create をクリックして、VCL スニペットを保存します。

では、作成したリダイレクトテーブルに対して、インバウンドリクエストと一致する、別のスニペットを作成します。コントロールパネルの VCL スニペット作成ページで Type を within subroutine に設定して recv (vcl_recv) を選択し、以下の VCL を使用します。

1if (table.lookup(solution_redirects, req.url.path)) {
2 error 618 "redirect";
3}

最後に、リダイレクトのレスポンスを生成する VCL スニペットを作成します。コントロールパネルの VCL スニペット作成ページで Type を within subroutine に設定して error (vcl_error) を選択し、以下の VCL を使用します。

1if (obj.status == 618 && obj.response == "redirect") {
2 set obj.status = 308;
3 set obj.http.Location = "https://" + req.http.host + table.lookup(solution_redirects, req.url.path) + if (std.strlen(req.url.qs) > 0, "?" req.url.qs, "");
4 return (deliver);
5}

Activate をクリックして、サービス設定の新しいバージョンを有効化します。https://www.tacolabs.com/tacos/2021/05/15/beef-hard-tacos.htmlで Web ブラウザを指すことで、リダイレクトが機能しているかどうかを確認することができます。https://www.tacolabs.com/tacos/2021/07/02/beef-soft-tacos.htmlにリダイレクトするはずです。機能しています!

これで、すべてを設定したので、今後、新しいリダイレクトを追加するのは簡単です。サービスをクローンして VCL テーブルにリダイレクトを追加し、サービスを有効化するたけです。非常に簡単です。

API を使用してすべてのキャッシュをパージする

以前に、このチュートリアルでパージの仕方について説明したのを覚えているでしょうか。purge all は他のオプションにも使える便利なものです。Fastly の API を使用して、GitHub Actions を使ってデプロイプロセスの一環として、自動的にパージリクエストが実行されるように設定することができます。

まず始めに、すべてをパージするリクエストは認証される必要があるため、コントロールパネルを使用してアカウント API トークンを作成します。アカウントメニューから、Account を選択し、サイドバーから Personal API tokens を選択します。Create Token をクリックします。以下のように、フォームフィールドに入力します。

Fastly コントロールパネルで API トークンを作成する

Create Token をクリックして、API トークンを作成します。トークンを安全な場所にコピー・ペーストして保存します。ページから離れた後、再びトークンを表示することはできません。

これで、Terminal アプリケーションを使用して Purge all の API エンドポイントをテストできます。

$ curl -X POST -H "Fastly-Key: YOUR_FASTLY_TOKEN" "https://api.fastly.com/service/SERVICE_ID/purge_all"

以下のレスポンスが表示されるはずです。

{"status":"ok"}

以下のように、コントロールパネルのイベントログインを見ることで、パージリクエストが正常に実行されたかどうかを確認することができます。成功です!

ヒント

ロールと権限を使用することで、Fastly コントロールパネルと API を使用してパージする機能を制限することができます。利用可能なユーザーロールに関する詳細については、ユーザーロールと権限の設定に関するドキュメントをご覧ください。

Fastly コントロールパネルでイベントログを確認する

次に GitHub Action の下部に curl コマンドを追加します。

1- name: "Purge Fastly cache"
2 run: |
3 curl -X POST -H "Fastly-Key: YOUR_FASTLY_TOKEN"
4 "https://api.fastly.com/service/SERVICE_ID/purge_all"

以上です!これで GitHub Action は、Web サイトを Amazon S3 にデプロイした後、自動的に Fastly のキャッシュをすべてパージします。

サロゲートキーでパージする

静的サイトに purge all を使用するよう取り組んでいますが、理論上、サロゲートキーを使用して、キャッシュからセレクトグループをどのようにパージするかについてはまだ研究の余地があります。これがどのように機能するかを理解するには、コンテンツのサブセットを選び、ヘッダーを使用してこれらのコンテンツ項目をサロゲートキーでタグ付けします。そうすることで、サロゲートキーでタグ付けされたコンテンツ項目のキャッシュのみをパージすることができます。

例えば、すべてのミックスイン (トッピング) にサロゲートキーが必要だとしましょう。原材料の価格が価格が頻繁に変わるため、ミックスインコンテンツを 1 日何回も更新してパージしなければならないと仮定します。VCL スニペットを使用して、mixin キーを作成し、すべてのミックスイン関連コンテンツをタグ付けします。また、オリジンまたはアプリケーションレベルでサロゲートキーを設定することもできます。

Edit configuration をクリックして、サービスを複製し、新しいドラフトバージョンを作成しましょう。VCL スニペットページで、Create snippet をクリックします。スニペットに名前を付け、Type を within subroutine に設定して fetch (vcl_fetch) を選択し、以下の VCL を使用します。

1if (req.url.path ~ "/mix-ins/") {
2 set beresp.http.Surrogate-key = "mixin";
3}

これで、ミックスインパス内のすべてのコンテンツにサロゲートキーを設定できます。コントロールパネルで以下のように設定されていることを確認し、Create をクリックします。

サロゲートキーで VCL スニペットを作成する

Activate をクリックして、サービス設定の新しいバージョンを有効化します。別の purge all を実行した後 (セクションの指示に従ってください)、ミックスインインデックスページのヘッダーをチェックすることで、リダイレクトが機能しているかどうかを確認することができます。

$ curl -svo /dev/null -H "Fastly-Debug:1" "https://www.tacolabs.com/mix-ins/"

出力で surrogate-key ヘッダーを確認することができます。

< HTTP/2 200
< x-amz-id-2: eDYmcGNu4Pk+AnTjHy5aO1kuOI802/tOdstMxa5FdZV0doL8Kjn7p/C+UBiE7u04Xg9bTmVooR8=
< x-amz-request-id: 6KF7YW10F6Q19T0Y
< last-modified: Thu, 04 Nov 2021 22:38:08 GMT
< etag: "d89bec2183579e4c842d2590bc45bf9f"
< content-type: text/html
< server: AmazonS3
< via: 1.1 varnish, 1.1 varnish
< surrogate-key: mixin
< cache-control: no-store, max-age=0
< surrogate-control: max-age=31557600

これで、API を使ってサロゲートキーでタグ付けされたコンテンツをパージすることができます。

$ curl -X POST -H "Fastly-Key: YOUR_FASTLY_TOKEN" "https://api.fastly.com/service/SERVICE_ID/purge/mixin"

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

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