ダイナミック VCL スニペットの使用

ダイナミック VCL スニペットは2種類のスニペットのうちの一つで、カスタム VCL を使わずに VCL ロジックの小さなセクションをサービスの設定に挿入することができます (ただし、必要に応じてカスタム VCL にスニペットを含めることができます)。

ダイナミックスニペットの作成は、API 経由でのみ可能です。これらはバージョンレスオブジェクトであるため(エッジのディクショナリACLと同様)、動的スニペットはサービスの変更とは別に変更することができます。そのため、本番環境に対応していないサービスバージョンをデプロイすることなく、スニペットコードを迅速に変更することができます。

ダイナミック VCL スニペットの作成と使用

curl コマンドラインツールを使用して、ターミナルアプリケーションで以下の API コールを行います。

$ curl -X POST -s https://api.fastly.com/service/<Service ID>/version/<Editable Version>/snippet -H "Fastly-Key:FASTLY_API_TOKEN" -H 'Content-Type: application/x-www-form-urlencoded' --data $'name=my_dynamic_snippet_name&type=recv&dynamic=1&content=if ( req.url ) {\n set req.http.my-snippet-test-header = "true";\n}';

Fastly は、以下のような JSON レスポンスを返します。

1{
2 "service_id": "<Service Id>",
3 "version": "<Editable Version>",
4 "name": "my_dynamic_snippet_name",
5 "type": "recv",
6 "priority": 100,
7 "dynamic": 1,
8 "content": null,
9 "id": "decafbad12345",
10 "created_at": "2016-09-09T20:34:51+00:00",
11 "updated_at": "2016-09-09T20:34:51+00:00",
12 "deleted_at": null
13}
注意

返された JSON には "content": null が含まれています。これは、コンテンツがバージョン管理されていない別のオブジェクトに保存されているためです。

ダイナミック VCL スニペットをコントロールパネルに表示する

ダイナミック VCL スニペットの一覧を表示することができます。また、生成された VCL 内の特定のスニペットのソースまたは特定のスニペットの場所のみを表示することもできます。

ダイナミック VCL スニペットの一覧表示

サービスのダイナミック VCL スニペットのリスト全体をコントロールパネルで表示するには、以下の手順に従ってください。

  1. Fastly コントロールパネルにログインします。
  2. Home ページから、適切な VCL サービスを選択します。検索ボックスで ID、名称、ドメインによる検索が行えます。

  3. Edit configuration をクリックし、アクティブなバージョンをクローンするオプションを選択します。
  4. VCL Snippets をクリックします。VCL Snippets ページが表示され、サービスのすべてのダイナミック VCL スニペットが Dynamic snippets エリアに表示されます。

    サービスに付属する VCL スニペットのリストの例

特定のスニペットのソースを表示する

特定のスニペットのソースだけを表示することができます。

  1. Fastly コントロールパネルにログインします。
  2. Home ページから、適切な VCL サービスを選択します。検索ボックスで ID、名称、ドメインによる検索が行えます。
  3. Edit configuration をクリックし、アクティブなバージョンをクローンするオプションを選択します。
  4. VCL Snippets をクリックします。
  5. スニペットの名前の右側にある View Source をクリックします。

生成された VCL で特定のスニペットの場所を表示する

生成された VCL で特定のスニペットの場所を表示することができます。

  1. Fastly コントロールパネルにログインします。
  2. Home ページから、適切な VCL サービスを選択します。検索ボックスで ID、名称、ドメインによる検索が行えます。
  3. Edit configuration をクリックし、アクティブなバージョンをクローンするオプションを選択します。
  4. VCL Snippets をクリックします。
  5. スニペットの名前の右側にある Show in Generated VCL をクリックします。Generated VCL ウィンドウが表示されます。

すべてのダイナミック VCL スニペットのリストを取得する

サービスに接続されているすべてのダイナミック VCL スニペットを一覧表示するには、ターミナルアプリケーションで以下の API コールを行います。

$ curl -X GET -s https://api.fastly.com/service/<Service ID>/version/<Version ID>/snippet -H "Fastly-Key:FASTLY_API_TOKEN"

個別のダイナミック VCL スニペットを取得する

個別のスニペットを取得するには、ターミナルアプリケーションで以下の API コールを行います。

$ curl -X GET -s https://api.fastly.com/service/<Service ID>/snippet/<Snippet ID> -H "Fastly-Key:FASTLY_API_TOKEN"

通常の VCL スニペットの取得とは異なり、URL にバージョンを含めず、スニペットの名前ではなく、スニペットの作成時に返された ID を使用する必要があります。

既存のダイナミック VCL スニペットを更新する

個々のスニペットを更新するには、ターミナルアプリケーションで以下の API コールを行います。

$ curl -X PUT -s https://api.fastly.com/service/<Service ID>/snippet/<Snippet ID> -H "Fastly-Key:FASTLY_API_TOKEN" -H 'Content-Type: application/x-www-form-urlencoded' --data $'content=if ( req.url ) {\n set req.http.my-snippet-test-header = \"affirmative\";\n}';

既存のダイナミック VCL スニペットを削除する

個々のスニペットを削除するには、ターミナルアプリケーションで以下の API コールを行います。

$ curl -X DELETE -s https://api.fastly.com/service/<Service ID>/version/<Version ID>/snippet/<my_dynamic_snippet_name> -H "Fastly-Key:FASTLY_API_TOKEN"

カスタム VCL にダイナミックスニペットを含める

type パラメータに none を場所として指定すると、VCL でスニペットがレンダリングされません。これにより、以下のシンタックスを使用してカスタム VCL にスニペットを含めることができます。

include "snippet::<snippet name>"

必要に応じて同じ VCL スニペットをいくつでもカスタム VCL に組み込むことができます。

ユースケース:Web スクレイパーをブロックする

例えば、お客様の Web サイトをスクレイピングしようとするユーザーをブロックするため、受信リクエストに対してパターンマッチングを実装したいとします。また、すべての受信リクエストをチェックして、受信 IP アドレス、ブラウザ、取得しようとしている URL を組み合わせてスクレイパーを特定できるルールセットを生成するシステムを開発したとします。さらに、システムが20分ごとにルールを更新するとします。

システムの更新中に、お客様の同僚が Fastly 設定の他の部分に変更を加えている場合、サービスの最新バージョンがテストされていない可能性があるため、システムが自動的に最新バージョンをデプロイすることは望ましくありません。その代わり、ルールをダイナミック VCL スニペットとして生成することができます。スニペットが更新されても、他のロジックはすべて現在デプロイされているバージョンと同じままで、ルールだけが変更されます。


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

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