レギュラー VCL スニペット の使用

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

ダイナミックスニペットとは異なり、レギュラースニペットはコントロールパネルまたは API 経由で作成できます。これらは「バージョン管理された」オブジェクトとみなされます。特定のサービスに属し、そのサービスの新しいバージョンをデプロイすると、スニペットに対して行った変更はすべてロックされて適用されます。削除されるまでクローンが作成され、サービスにデプロイされ続けます。

レギュラー VCL スニペットの作成

レギュラー VCL スニペットは、コントロールパネルまたは API 経由で作成することができます。

コントロールパネルによる作成

コントロールパネルでレギュラー VCL スニペットを作成するには、以下の手順に従ってください。。

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

    未入力の Create a VCL snippet ページ

  6. Name フィールドに適切な名前を入力します (例:Example Snippet)。
  7. Type セクションでスニペットを配置する場所を以下のように選択します。
    • VCL のすべてのサブルーチンよりも上に挿入するには、init を選択します。
    • 特定のサブルーチン内に挿入したい場合は within subroutine を選択し、Select subroutine メニューから特定のサブルーチンを選択します。
    • 手動で挿入するには none (advanced) を選択します。このオプションを選択した場合の追加の手動挿入要件については、カスタム VCL にレギュラースニペットを含めるをご参照ください。
  8. VCL フィールドに、サービスバージョンに挿入される VCL ロジックのスニペットを入力します。
  9. Create をクリックすると、スニペットが作成されます。

API による作成

API を使用してレギュラー 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 `fastly-cookie` -H 'Content-Type: application/x-www-form-urlencoded' --data $'name=my_regular_snippet&type=recv&dynamic=0&content=if ( req.url ) {\n set req.http.my-snippet-test-header = "true";\n}';

以下のような JSON がレスポンスとして返されます。

1
2
3
4
5
6
7
8
9
10
11
12
13
{
 "service_id": "<Service Id>",
 "version": "<Editable Version>",
 "name": "my_regular_snippet",
 "type": "recv",
 "content": "if ( req.url ) {\n set req.http.my-snippet-test-header = \"true\";\n}",
 "priority": 100,
 "dynamic": 0,
 "id": "56789exampleid",
 "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 スニペットがすべて表示されます。

    サービスに付属する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 ウィンドウが表示されます。

API を使用してレギュラー VCL スニペットを取得する

API を使用して特定のサービスのレギュラー VCL スニペットを個別で、またはすべてを一括で取得できます。

個別にレギュラー VCL スニペットを取得する

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

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

ダイナミック VCL スニペットを取得する場合とは異なり、URL にバージョンを含め、ID ではなくスニペットの名前を使用する必要があります。

レギュラー 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 で既存のレギュラー VCL スニペットを更新することができます。

コントロールパネルによる作成

コントロールパネルで個々のスニペットを更新するには、以下の手順に従ってください。

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

    ペンのアイコンをクリックして既存のレギュラー VCL スニペットを更新する

    Edit snippet ページが表示されます。

    Edit snippet ページ

  6. 必要に応じてスニペットの設定や VCL を更新します。
  7. Update をクリックして変更内容を保存します。

API による作成

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

1
$ curl -X PUT -s https://api.fastly.com/service/<Service ID>/version/<Editable Version #>/snippet/<Snippet Name e.g my_regular_snippet> -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 で既存のレギュラー VCL スニペットを更新することができます。

コントロールパネルによる作成

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

    既存のレギュラー VCL Snippet

    確認ウィンドウが表示されます。

    既存のレギュラー VCL Snippet を削除する確認

  6. Confirm and Delete をクリックします。

API による作成

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

1
$ curl -X DELETE -s https://api.fastly.com/service/<Service ID>/version/<Editable Version #>/snippet/<Snippet Name e.g my_regular_snippet> -H "Fastly-Key:FASTLY_API_TOKEN"

カスタム VCL に通常のスニペットを含める

コントロールパネルでスニペットタイプに none (advanced) を選択した場合や、API の type パラメータに none で場所を指定した場合、スニペットは VCL で表示されません。これにより、以下のシンタックスを使用してカスタム VCL にスニペットを手動で含めることができます。

include "snippet::<snippet name>"

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

使用例:位置情報を利用したリダイレクト

例えば、お客様の会社が大規模なコンテンツパブリッシャーであると想定し、ユーザーのリクエストがどの国から来ているのかに応じて、出版物の異なるエディションにリダイレクトさせたいとします。また、Cookie に基づいて配信するエディションを上書きする機能が必要であるとします。

レギュラー VCL スニペットを使用すると、以下のように関連する VCL を持つオブジェクトを追加することができます。

1
2
3
4
5
6
7
8
9
10
if (req.http.Cookie:edition == "US" || client.geo.country_code == "US" || ) {
  set req.http.Edition = "US";
  set req.backend = F_US;
} elseif (req.http.Cookie:edition == "Europe" || server.region ~ "^EU-" ) {
  set req.http.Edition = "EU";
  set req.backend = F_European;
} else {
  set req.http.Edition = "INT";
  set req.backend = F_International;
}

これにより、VCL で Edition ヘッダーが作成されますが、条件を設定してそれを上書きすることができます。Vary に Edition ヘッダーを追加し、他のバックエンドに false 条件を追加 (例:!reg.url) することで、出版物の正しいエディションが配信されるようにすることができます (バックエンドが設定される前に VCL に VCL スニペットが追加されることにご注意ください)。

Back to Top