コントロールパネル経由で Edge Dictionary を作成・編集する

エッジディクショナリは、単一のバージョンに添付することなく、サービスで使用可能なキーと値のペアとしてデータを保存できるコンテナの種類です。Edge Dictionary は、ディクショナリコンテナとディクショナリ項目で構成されています。ディクショナリ項目を使用して、キーと値のペアを作成し保存します。そのディクショナリ項目は、ディクショナリコンテナに追加されます。ディクショナリコンテナはサービスバージョンにアタッチされますが、サービスのバージョンを増分することなく、作成後いつでも更新することができます。

コントロールパネルカスタム VCL スニペットFast API を使用して、ディクショナリを操作することができます。また、プライベートエッジディクショナリを作成することもできます。

設定作業の前に

エッジディクショナリを設定する前に、エッジディクショナリについてガイドを参照し、エッジディクショナリの仕組み、一般的なユースケース、ディクショナリの使用における制約事項についてご理解ください。

コントロールパネルでのディクショナリの操作

コントロールパネルを使用して、エッジディクショナリを作成し、操作することができます。

コントロールパネルで作成したディクショナリを表示する

コントロールパネル経由でディクショナリを表示するには、ご利用のサービスのディクショナリ管理エリアに移動します。

  1. Fastly コントロールパネルにログインします。
  2. Home ページから、該当するサービスを選択します。検索ボックスを使用して ID、名前、またはドメインで検索することができます。
  3. Edit configuration ボタンをクリックし、アクティブなバージョンをクローンするオプションを選択します。ドメインページが表示されます。
  4. Data の下にある Dictionaries リンクをクリックします。現在選択されているサービスバージョンに関連する既存のディクショナリがある場合は、そのディクショナリが表示されます。

コントロールパネル経由でディクショナリを作成する

コントロールパネル経由でディクショナリを作成するには、ディクショナリコンテナを作成し、その中に入る項目を作成する必要があります。

ディクショナリコンテナの作成

まず、以下の手順に従ってディクショナリコンテナを作成します。

  1. Fastly コントロールパネルにログインします。
  2. Home ページから、該当するサービスを選択します。検索ボックスを使用して ID、名前、またはドメインで検索することができます。
  3. Edit configuration ボタンをクリックし、アクティブなバージョンをクローンするオプションを選択します。ドメインページが表示されます。
  4. Data の下にある Dictionaries リンクをクリックします。Dictionaries ページが表示されます。
  5. Create a dictionary をクリックします。ディクショナリコンテナ名のフィールドが表示されます。
  6. Name of dictionary フィールドに、ディクショナリの分かりやすい名前を入力します (例:Example Dictionary)。
  7. Add ボタンをクリックします。作成した空のディクショナリコンテナが表示されます。
  8. Activate ボタンをクリックすると、編集中のサービスバージョンに設定変更が反映されます。

ディクショナリ項目の作成

ディクショナリコンテナを作成した後、それに項目を追加します。

  1. Add item をクリックします。ディクショナリ項目のフィールドが表示されます。
  2. Key フィールドには、データの一部の項目を表す一意の識別子を入力します (例:example.com)。
  3. Value フィールドには、一意の識別子に関連する値を入力します (例:yes)。
  4. Add ボタンをクリックします。キーと値のペアがディクショナリコンテナに表示されます。追加された項目は直ちに有効となります。

    Fastly コントロールパネルに表示された、1つのディクショナリ項目を持つディクショナリコンテナの例

コントロールパネル経由でディクショナリを使用する

ディクショナリを作成したら、すぐに使用を開始できます。コントロールパネルを使用してディクショナリを使用するには、ヘッダーを作成して追加する必要があります。以下の手順に従ってください。

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

    コントロールパネルによるディクショナリの使用

  6. 以下の要領で Create a header ページの各フィールドに入力します。
    • Name フィールドには、ヘッダールール名を入力します (例:Redirect lookup)。
    • Type メニューから Request を選択し、Action メニューから Set を選択します。
    • Destination フィールドに、選択したアクションの影響を受けるヘッダーの名前を入力します (例:url)。
    • Source フィールドには、ヘッダーのコンテンツを取得する場所を入力します (例:table.lookup(redirects, req.url))。
    • Ignore if set メニューから No を選択します。
    • Priority フィールドはそのままにしておきます。
  7. Create ボタンをクリックすると、ヘッダーが作成されます。Content ページに新しいヘッダーが表示されます。

ヘッダーを作成したら、条件を作成して、ディクショナリを使用する条件を指定できます。

  1. 作成した新規ヘッダーの横にある Attach a condition をクリックします。Add a condition のメッセージが表示されます。
  2. Create a new request condition ボタンをクリックします。Create a new condition ページが表示されます。

    ディクショナリに条件を追加する

  3. Name フィールドに条件の名前を入力します (例:My dictionary condition)。
  4. Apply if フィールドに条件を入力します (例:table.lookup(redirects, req.url))。
  5. Save and apply to ボタンをクリックします。
  6. Activate ボタンをクリックして設定変更をデプロイします。

コントロールパネル経由でディクショナリコンテナを編集する

ロックされていない任意のサービスバージョンで、コントロールパネルを介して作成されたディクショナリコンテナの名前を編集できます。

  1. ご利用のサービスのロックされていないバージョンに関連するディクショナリを検索します。
  2. ディクショナリコンテナの名前の横にある鉛筆アイコンをクリックします。
  3. 名前を変更して Save ボタンをクリックします。

コントロールパネルによるディクショナリ項目の編集

コンテナ内のディクショナリ項目は、いつでも編集することができます。コントロールパネルで作成したディクショナリコンテナのキーと値のペアを編集するには、以下の指示に従ってください。

  1. キーと値のペアが表示される、サービスに関連付けられているディクショナリを探します。ディクショナリ項目はバージョン管理されていないため、選択したサービスのバージョンは関係ありません。お客様にとって最も合理的なものをお選びください。
  2. ディクショナリ項目にカーソルを合わせて、表示される鉛筆のアイコンをクリックします。
  3. 必要に応じてキーや値を編集します。
  4. Save ボタンをクリックします。変更した内容は、すぐに設定に反映されます。ディクショナリコンテナがすでに有効化されているサービスバージョンと関連付けられている場合、それらの変更は直ちに本番環境に反映されます。

コントロールパネルによるディクショナリの削除

ディクショナリの制約事項を考慮しながら、VCL スニペットやディクショナリコンテナを使用してディクショナリを削除したり、ディクショナリ内の項目をコントロールパネルで削除することができます。

ディクショナリコンテナの削除

ロックされていない任意のサービスバージョンで、コントロールパネルを介して作成されたディクショナリコンテナを削除することができます。

  1. ご利用のサービスのロックされていないバージョンに関連するディクショナリを検索します。
  2. ディクショナリの右上にあるゴミ箱のアイコンをクリックします。
  3. Confirm and delete ボタンをクリックします。
  4. Activate ボタンをクリックすると、編集中のサービスバージョンに設定変更が反映されます。

ディクショナリ項目の削除

コンテナ内のディクショナリ項目は、いつでも削除することができます。コントロールパネルで作成したディクショナリコンテナに含まれるキーと値のペアを削除するには、以下の指示に従ってください。

  1. キーと値のペアが表示される、サービスに関連付けられているディクショナリを探します。ディクショナリ項目はバージョン管理されていないため、選択したサービスのバージョンは関係ありません。お客様にとって最も合理的なものをお選びください。
  2. ディクショナリの項目にカーソルを合わせて、表示されるゴミ箱アイコンをクリックします。 
  3. Confirm and delete をクリックします。

VCL スニペットによるディクショナリの設定

カスタム VCL スニペットを使用して、エッジディクショナリを作成して操作することができます。カスタム VCL によって作成された Edge Dictionary は、API やコントロールパネルを使用して操作することができません。カスタム VCL を使用して作成されたディクショナリコンテナは、必ずカスタム VCL で操作する必要があります。カスタム VCL 経由でアップロードされた dictionary は、バージョンレスではありません。

VCL スニペットで作成したディクショナリを表示する

VCL Snippets リンクでディクショナリを表示するには、以下の手順に従ってください。

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

VCL スニペットを使用してディクショナリを作成する

VCL スニペットを使用してディクショナリを作成するには、以下の手順に従ってください。

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

    VCL スニペットで作成したディクショナリコンテナの例

  6. Name フィールドに適切な名前を入力します (例:Example Dictionary)。
  7. Type (placement of the snippet) から、init を選択します。
  8. VCL フィールドではテーブルを作成し、キーと値のペアを追加します。例えば、ある URL を別のパスにリダイレクトするテーブルを作成したいとします。

    1
    2
    3
    4
    
    table redirects {
      "/source1": "/dest1",
      "/source2": "/dest2"
    }
    

    テーブルは、コードで参照できるキーと値のペアのセットです。このテーブルの中身を別のキーと値のペアに置き換えることができます。

  9. Create をクリックすると、スニペットが作成されます。

VCL スニペットでディクショナリを使用する

ディクショナリを作成したら、すぐに使用を開始できます。

VCL スニペットでディクショナリを使用するには、以下の手順に従ってください。

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

    サブルーチン付きのディクショナリコンテナの例

  6. Name フィールドに適切な名前を入力します (例:URL redirect)。
  7. Type (placement of the snippet) のセクションで、within subroutine を選択します。
  8. Select subroutine メニューから、recv (vcl_recv) を選択します。
  9. VCL フィールドには、VCL スニペットを使用してディクショナリを作成した際に作ったテーブルを使用する条件を追加します。例えば、URL の宛先を書き換える必要がある場合、以下のようになります。

    1
    2
    3
    
    if (table.lookup(redirects, req.url)) {
      set req.url = table.lookup(redirects, req.url);
    }
    

    table.lookupここでは、ディクショナリで必要なコンテンツをチェックします。最初のパラメーターは検索対象のテーブル、2番目のパラメーターは検索対象のキーです。キーが2番目のパラメーターと完全に一致する場合は、その値が返されます。ディクショナリ検索では regex は機能しないのでご注意ください。

  10. Create をクリックすると、スニペットが作成されます。
  11. Activate ボタンをクリックして設定変更をデプロイします。

VCL スニペットを使用してディクショナリを編集する

ロックされていない任意のサービスバージョンで、ディクショナリの名前と、VCL スニペットを使用して作成された条件を編集することができます。

  1. ご利用のサービスのロックされていないバージョンに関連するディクショナリを見つけます。
  2. ディクショナリの横にある鉛筆のアイコンをクリックします。これで、名前や条件を変更できます。
  3. 変更が完了したら、Update ボタンをクリックします。
  4. Activate ボタンをクリックすると、編集したバージョンが有効になり、VCL の変更内容が表示されます。

VCL スニペットを使用してディクショナリを削除する

以下の手順に従って VCL スニペットを使用してディクショナリを削除することができます。ディクショナリの削除に伴う制約事項に注意してください。

  1. ご利用のサービスのロックされていないバージョンに関連するディクショナリを見つけます。
  2. スニペットの右上にあるゴミ箱のアイコンをクリックします。
  3. Confirm and delete ボタンをクリックします。
  4. Activate ボタンをクリックすると、編集中のサービスバージョンに設定変更が反映されます。

プライベート Edge Dictionary

プライベート Edge Dictionary には、コントロールパネルや API では一覧表示や読み取りができないディクショナリ項目を格納できます。

制約および考慮事項

プライベート Edge Dictionary を作成する際には、以下の点に留意してください。

  • プライベートディクショナリの作成、読み取り、更新、削除が可能です。
  • ディクショナリの write_only 属性は更新できません。
  • プライベートディクショナリに属する項目の作成、更新、削除が可能です。
  • プライベートディクショナリに属する項目を API で確認することはできません。
  • サービスの設定によっては、プライベート Edge Dictionary に格納されているデータをヘッダーで送信したり、ログストリーミングのエンドポイントに送信することができます。

プライベート・ディクショナリ・コンテナの作成

プライベート・ディクショナリ・コンテナを使用するには、まずロックされていないバージョンのサービス内に空のディクショナリコンテナを作成します。

プライベート Edge Dictionary を使用する前に、そのプライベート・ディクショナリ・コンテナが、ロックも有効化もされていないサービスバージョンの少なくとも1つと関連付けられ、そのサービスがプライベートディクショナリの存在を認識できるようにする必要があります。

例えば、API 経由で my_example_dictionary のプライベートディクショナリを作成する場合、以下のコマンドを実行して API コールを行います。

1
$ curl -X POST -H 'Fastly-Key: FASTLY_API_TOKEN' -d 'name=my_example_dictionary&write_only=true' https://api.fastly.com/service/<service_id>/version/<version_number>/dictionary

これにより以下が返されます。

1
2
3
4
5
6
7
8
9
10
{
  "created_at": "2017-05-03T16:11:41+00:00",
  "deleted_at": null,
  "id": "<dictionary_id>",
  "name": "my_example_dictionary",
  "service_id": "<service_id>",
  "updated_at": "2017-05-03T16:11:41+00:00",
  "version": <version_number>,
  "write_only": true
}

ディクショナリの作成後、ディクショナリ項目を追加できます。作業終了後、サービスの有効化を忘れずに行ってください。

VCL でプライベートディクショナリを確認する

プライベート Edge Dictionaries のコンテンツは VCL に隠されています。プライベートディクショナリのメタデータが以下のように表示されます。

1
2
3
4
5
6
table my_example_dictionary {
     # REDACTED dictionary content
     # last_updated: 2017-10-16 20:44:43
     # item_count: 2
     # digest: 8f92141234567890da30ba9cea7d98ef614
 }

今後の予定

Developer Hub でエッジディクショナリの使用についてのカスタム VCL の例を参照してください。

Back to Top