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

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

ダイナミックスニペットの作成は、API 経由でのみ可能です。ダイナミックスニペットはバージョンレスのオブジェクトであるため (エッジで使用する Edge DictionaryACL のように)、Fastly サービスの変更とは無関係に変更することができます。そのため、本番環境に対応していないサービスバージョンをデプロイすることなく、スニペットコードを迅速に変更することができます。

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

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

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

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

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

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

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

  1. Fastly コントロールパネルにログインします。
  2. All services ページから、該当するサービスを選択します。検索ボックスを使用して ID、名前、またはドメインで検索することができます。
  3. Edit configuration ボタンをクリックし、アクティブなバージョンをクローンするオプションを選択します。ドメインページが表示されます。
  4. VCL Snippets リンクをクリックします。VCL Snippets ページが表示され、サービスのすべてのダイナミック VCL スニペットが Dynamic snippets エリアに表示されます。

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

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

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

  1. Fastly コントロールパネルにログインします。
  2. All services ページから、該当するサービスを選択します。検索ボックスを使用して ID、名前、またはドメインで検索することができます。
  3. Edit configuration ボタンをクリックし、アクティブなバージョンをクローンするオプションを選択します。ドメインページが表示されます。
  4. VCL Snippets リンクをクリックします。VCL Snippets ページが表示されます。
  5. スニペットの名前の右側にある View Source リンクをクリックします。View Source ウィンドウが表示されます。

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

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

  1. Fastly コントロールパネルにログインします。
  2. All services ページから、該当するサービスを選択します。検索ボックスを使用して ID、名前、またはドメインで検索することができます。
  3. Edit configuration ボタンをクリックし、アクティブなバージョンをクローンするオプションを選択します。ドメインページが表示されます。
  4. VCL Snippets リンクをクリックします。VCL Snippets ページが表示されます。
  5. スニペットの名前の右側にある Show in Generated VCL リンクをクリックします。Generated VCL ウィンドウが表示されます。

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

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

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

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

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

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

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

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

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

1
$ curl -X PUT -s https://api.fastly.com/service/<Service ID>/snippet/<my_dynamic_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 コールを行います。

1
$ curl -X DELETE -s https://api.fastly.com/service/<Service ID>/version/<Editable Version>/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 スニペットとして生成することができます。スニペットが更新されても、他のロジックはすべて現在デプロイされているバージョンと同じままで、ルールだけが変更されます。

Back to Top