- English
- 日本語
ダイナミック VCL スニペットの使用
最終更新日 2022-04-05
ダイナミック 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 レスポンスを返します。
12345678910111213
{ "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}
注意
返された JSON には "content": null
が含まれています。これは、コンテンツがバージョン管理されていない別のオブジェクトに保存されているためです。
ダイナミック VCL スニペットをコントロールパネルに表示する
ダイナミック VCL スニペットの一覧を表示することができます。また、生成された VCL 内の特定のスニペットのソースまたは特定のスニペットの場所のみを表示することもできます。
ダイナミック VCL スニペットの一覧表示
サービスのダイナミック VCL スニペットのリスト全体をコントロールパネルで表示するには、以下の手順に従ってください。
- Fastly コントロールパネルにログインします。
Home ページから、適切な VCL サービスを選択します。検索ボックスで ID、名称、ドメインによる検索が行えます。
- Edit configuration をクリックし、アクティブなバージョンをクローンするオプションを選択します。
VCL Snippets をクリックします。VCL Snippets ページが表示され、サービスのすべてのダイナミック VCL スニペットが Dynamic snippets エリアに表示されます。
特定のスニペットのソースを表示する
特定のスニペットのソースだけを表示することができます。
- Fastly コントロールパネルにログインします。
- Home ページから、適切な VCL サービスを選択します。検索ボックスで ID、名称、ドメインによる検索が行えます。
- Edit configuration をクリックし、アクティブなバージョンをクローンするオプションを選択します。
- VCL Snippets をクリックします。
- スニペットの名前の右側にある View Source をクリックします。
生成された VCL で特定のスニペットの場所を表示する
生成された VCL で特定のスニペットの場所を表示することができます。
- Fastly コントロールパネルにログインします。
- Home ページから、適切な VCL サービスを選択します。検索ボックスで ID、名称、ドメインによる検索が行えます。
- Edit configuration をクリックし、アクティブなバージョンをクローンするオプションを選択します。
- VCL Snippets をクリックします。
- スニペットの名前の右側にある 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 のプライバシーポリシーと利用規約が適用されます。