レギュラー VCL スニペットを使用する
Last updated August 09, 2018
レギュラー VCL スニペットは、2種類のスニペットのうちの一つで、カスタム VCL を使わずに VCL ロジックの小さなセクションをサービスの設定に挿入することができます(ただし、必要に応じてカスタム VCL にスニペットを含めることはできます)。
ダイナミック VCL スニペットとは異なり、レギュラー VCL スニペットはコントロールパネルまたは API 経由で作成できます。それらは「バージョン管理された」オブジェクトと見なされます。特定のサービスに属し、スニペットに対して行った変更は、そのサービスの新しいバージョンをデプロイすると、設定がロックされ適用されます。削除されるまでは、その設定は引き継がれます。
レギュラー VCL スニペットを作成する
レギュラー VCL スニペットは、コントロールパネルまたは API 経由で作成できます。
コントロールパネルによる作成
コントロールパネルでレギュラー VCL スニペットを作成するには:
- Fastly コントロールパネルにログインし、Configure のリンクをクリックします。
- サービスメニューから設定対象のサービスを選択します。
- VCL Snippets リンクをクリックします。VCL Snippets ページが表示されます。
-
Create Snippet をクリックします。Create a VCL snippet ページが表示されます。
- Name フィールドに、適切な名前(たとえば、「Example Snippet」)を入力します。
- Type コントロールでスニペットを配置する場所を次のように選択します。
- VCL のすべてのサブルーチンよりも上に挿入するには、
init
を選択します。 - 特定のサブルーチン内に挿入するには
within subroutine
を選択し、Select subroutine メニューから特定のサブルーチンを選択します。 - 手動で挿入するには
none (advanced)
を選択してください。このオプションを選択した場合、追加の手動挿入要件については、カスタム VCL にレギュラー VCL スニペットを含めるを参照してください。
- VCL のすべてのサブルーチンよりも上に挿入するには、
- VCL フィールドに、サービスバージョンにスニペットとして挿入される VCL ロジックを入力します。
- 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 スニペットが作成されると、id
フィールドが返されますが、レギュラー VCL スニペットでは使用されません。このフィールドはダイナミック VCL スニペットにのみ適用されます。さらに、スニペットコンテンツはバージョン管理されたオブジェクトに格納されているため、返された JSON には content
フィールドが含まれています。
コントロールパネルでのレギュラー VCL スニペットの表示
レギュラー VCL スニペットのリストを表示することができます。また、生成された VCL 内の特定のスニペットのソースまたは特定のスニペットの場所だけを表示することもできます。
レギュラー VCL スニペットのリストを表示する
サービスのレギュラー VCL スニペットのリスト全体をコントロールパネルで表示するには:
- Fastly コントロールパネルにログインし、Configure のリンクをクリックします。
- サービスメニューから設定対象のサービスを選択します。
-
VCL Snippets リンクをクリックします。VCL Snippets ページが表示され、使用可能なすべてのVCLスニペットが表示されます。
特定のスニペットのソースを表示する
特定のスニペットのソースだけを表示することができます:
- Fastly コントロールパネルにログインし、Configure のリンクをクリックします。
- サービスメニューから設定対象のサービスを選択します。
- VCL Snippets リンクをクリックします。VCL Snippets ページが表示されます。
- スニペットの名前の右側にある View Source リンクをクリックします。View Source ウィンドウが表示されます。
生成された VCL で特定のスニペットの場所を表示する
生成された VCL で特定のスニペットの場所を表示することができます。
- Fastly コントロールパネルにログインし、Configure のリンクをクリックします。
- サービスメニューから設定対象のサービスを選択します。
- VCL Snippets リンクをクリックします。VCL Snippets ページが表示されます。
- スニペットの名前の右側にある 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 スニペットを更新する
レギュラー VCL スニペットは、コントロールパネルまたは API で更新できます。
コントロールパネルでの設定
コントロールパネルでレギュラー VCL スニペットを更新するには:
- Fastly コントロールパネルにログインし、Configure のリンクをクリックします。
- サービスメニューから設定対象のサービスを選択します。
- VCL Snippets リンクをクリックします。VCL Snippets ページが表示されます。
-
更新するスニペットの名前の横にあるペンのアイコンをクリックします。
Edit snippet ページが表示されます。
- 必要に応じてスニペットの設定や VCL を更新します。
- 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 スニペットを削除する
レギュラー VCL スニペットは、コントロールパネルまたは API で削除できます。
コントロールパネルでの削除
- Fastly コントロールパネルにログインし、Configure のリンクをクリックします。
- サービスメニューから設定対象のサービスを選択します。
- VCL Snippets リンクをクリックします。VCL Snippets ページが表示されます。
-
更新されるスニペットの名前の右側にあるゴミ箱のアイコンをクリックします。
確認ウィンドウが表示されます。
- Confirm and Delete をクリックします。
API による削除
API を使用して個々のスニペットを削除するには、curl コマンドで以下の 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 に通常のスニペットを含める
コントロールパネルの Type で none (advanced)
を選択するか、API の type
パラメータに none
で位置を指定すると、スニペットは VCL で表示されません。これにより、次の構文を使用してカスタム VCL にスニペットを手動で含めることができます。
include "snippet::<snippet name>"
必要に応じて同じ VCL スニペットをカスタム VCL に組み込むことができます。
使用例:ロケーションベースのリダイレクト
大規模なコンテンツパブリッシャーで働いていると想定し、ユーザーの要求がどの国から来ているかによって、それぞれ異なるエディションを配信したいとします。また、クッキーに基づいて配信するエディションを上書きする機能が必要とします。
レギュラー 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 にスニペットが追加されることにご注意ください)。