LOG IN SIGN UP
Documentation

レギュラー VCL スニペットを使用する

  Last updated August 21, 2017

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

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

レギュラー VCL スニペットを作成する

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

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

コントロールパネルでレギュラー VCL スニペットを作成するには:

  1. Fastly コントロールパネルにログインし、Configure のリンクをクリックします。
  2. サービスメニューから設定対象のサービスを選択します。
  3. VCL Snippets リンクをクリックします。VCL Snippets ページが表示されます。
  4. Create Snippet をクリックします。Create a VCL snippet ページが表示されます。

    a blank Create a VCL snippet page

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

API による作成

API を使用してレギュラー 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 `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 がレスポンスとして返されます。

{
 "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 コントロールパネルにログインし、Configure のリンクをクリックします。
  2. サービスメニューから設定対象のサービスを選択します。
  3. VCL Snippets リンクをクリックします。VCL Snippets ページが表示され、使用可能なすべてのVCLスニペットが表示されます。

    an example listing of VCL snippets attached to a service

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

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

  1. Fastly コントロールパネルにログインし、Configure のリンクをクリックします。
  2. サービスメニューから設定対象のサービスを選択します。
  3. VCL Snippets リンクをクリックします。VCL Snippets ページが表示されます。
  4. スニペットの名前の右側にある View Source リンクをクリックします。View Source ウィンドウが表示されます。

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

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

  1. Fastly コントロールパネルにログインし、Configure のリンクをクリックします。
  2. サービスメニューから設定対象のサービスを選択します。
  3. VCL Snippets リンクをクリックします。VCL Snippets ページが表示されます。
  4. スニペットの名前の右側にある Show in Generated VCL リンクをクリックします。Generated VCL ウィンドウが表示されます。

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

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

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

個々のスニペットを取得するには、ターミナルで次の API 呼び出しを行います。

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 呼び出しを行います。

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

既存のレギュラー VCL スニペットを更新する

レギュラー VCL スニペットは、コントロールパネルまたは API で更新できます。

コントロールパネルでの設定

コントロールパネルでレギュラー VCL スニペットを更新するには:

  1. Fastly コントロールパネルにログインし、Configure のリンクをクリックします。
  2. サービスメニューから設定対象のサービスを選択します。
  3. VCL Snippets リンクをクリックします。VCL Snippets ページが表示されます。
  4. 更新するスニペットの名前の横にあるペンのアイコンをクリックします。

    the pencil icon to click when updating an existing regular VCL Snippet

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

    an Edit snippet page

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

API による更新

API を使用して個々のスニペットを更新するには、ターミナルで次の API を実行します。

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 スニペットを削除する

レギュラー VCL スニペットは、コントロールパネルまたは API で削除できます。

コントロールパネルでの削除

  1. Fastly コントロールパネルにログインし、Configure のリンクをクリックします。
  2. サービスメニューから設定対象のサービスを選択します。
  3. VCL Snippets リンクをクリックします。VCL Snippets ページが表示されます。
  4. 更新されるスニペットの名前の右側にある Delete リンクをクリックします。

    an existing regular VCL Snippet

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

    a regular VCL Snippet deletion confirmation

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

API による削除

API を使用して個々のスニペットを削除するには、curl コマンドで以下の API を実行します。

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 に通常のスニペットを含める

コントロールパネルの Type で none (advanced) を選択するか、API の type パラメータに none で位置を指定すると、スニペットは VCL で表示されません。これにより、次の構文を使用してカスタム VCL にスニペットを手動で含めることができます。

include "snippet::<snippet name>"

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

使用例:ロケーションベースのリダイレクト

大規模なコンテンツパブリッシャーで働いていると想定し、ユーザーの要求がどの国から来ているかによって、それぞれ異なるエディションを配信したいとします。また、クッキーに基づいて配信するエディションを上書きする機能が必要とします。

レギュラー VCL スニペットを使用すると、次のような VCL を追加することができます。

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 で Edtion ヘッダーが作成されますが、条件を設定してそれを上書きすることができます。加えてVary に Edition ヘッダーを追加、および false条件の追加(例:!reg.url)を他のバックエンドに追加して、正しいエディションが確実に提供されるようにします(バックエンドが設定される前に VCL にスニペットが追加されることにご注意ください)。


Back to Top