API を使用して Edge Dictionary 項目を作成・編集する

ディクショナリ項目とは Edge Dictionary のディクショナリコンテナのエントリーを構成するキーと値のペアです。Edge Dictionary を作成し、ディクショナリコンテナをサービスに関連付けると、作成されたディクショナリ項目は生成された VCL に表示されます。

例えば、Edge Dictionaries を使用して位置情報のリダイレクトをコントロールする場合、テーブルは以下のようになります。

1
2
3
4
5
6
table geoip_redirect {
  "GB"  :  "www.example.co.uk",
  "IE"  :  "www.example.co.uk",
  "IT"  :  "www.example.com.it",
  "AU"  :  "www.example.com.au",
}

ディクショナリコンテナの ID を検索する

サービスの有効化されているバージョンに関連付けられたディクショナリコンテナがすでに存在する場合、dictionary_id が分かれば、その中の項目を追加、更新、削除できます。

位置情報の例では、以下の API コールで dictionary_id を検索します。

1
2
curl -H 'Fastly-Key: FASTLY_API_TOKEN'
https://api.fastly.com/service/<service_id>/version/<version_number>/dictionary/geoip_redirect

この場合、以下のようなレスポンスが返されます。

1
2
3
4
5
6
{
  "version": <version_number>,
  "name": "geoip_redirect",
  "id": "<dictionary_id>",
  "service_id": "<service_id>"
}

ディクショナリに新しい項目を追加する

新しいサービスのバージョンを作成することなく、新しいディクショナリ項目を追加できます。例えば、位置情報テーブルに新しいディクショナリ項目を追加するために以下の API コールを行います。

1
curl -X POST -H 'Fastly-Key: FASTLY_API_TOKEN' -d 'item_key=NZ&item_value=www.example.com.au' "https://api.fastly.com/service/<service_id>/dictionary/<dictionary_id>/item"

以下のレスポンスが返されます。

1
2
3
4
5
6
{
  "dictionary_id": "<dictionary_id>",
  "service_id": "<service_id>",
  "item_key": "NZ",
  "item_value": "www.example.com.au"
}

生成された VCL のテーブルは、新しいディクショナリ項目で更新され以下のようになります。

1
2
3
4
5
6
7
table geoip_redirect {
  "GB"  :  "www.example.co.uk",
  "IE"  :  "www.example.co.uk",
  "IT"  :  "www.example.com.it",
  "AU"  :  "www.example.com.au",
  "NZ"  :  "www.example.com.au",
}

ディクショナリ項目の一覧表示

Edge Dictionary では、すべてのディクショナリ項目を表示することができます。例えば、以下の API コールを行います。

1
curl -H "Fastly-Key: FASTLY_API_TOKEN" https://api.fastly.com/service/<service_id>/dictionary/<dictionary_id>/items

以下のレスポンスが返されます。

1
2
3
4
5
6
7
8
9
{
  "dictionary_id": "<dictionary_id>",
  "service_id": "<service_id>",
  "item_key": "some_key",
  "item_value": "some_value",
  "created_at": "2016-04-21T18:14:32+00:00",
  "deleted_at": null,
  "updated_at": "2016-04-21T18:14:32+00:00"
}

ディクショナリ項目をアップサートする

ディクショナリ項目が存在するかどうかに関わらず、ディクショナリ項目を作成・更新できます。例えば、以下の位置情報テーブルへの API コールでは、既存のディクショナリ項目が存在しない場合は項目を作成し、存在する場合は既存の項目を更新します。

1
curl -X PUT -H 'Fastly-Key: FASTLY_API_TOKEN' -d 'item_value=www.example.co.aq' "https://api.fastly.com/service/<service_id>/dictionary/<dictionary_id>/item/AQ"

以下のレスポンスが返されます。

1
2
3
4
5
6
{
  "dictionary_id": "<dictionary_id>",
  "item_key": "AQ",
  "item_value": "www.example.co.aq",
  "service_id": "<service_id>"
}

生成された VCL のテーブルは、新しいディクショナリ項目で更新され以下のようになります。

1
2
3
4
5
6
7
8
table geoip_redirect {
  "GB"  :  "www.example.co.uk",
  "IE"  :  "www.example.co.uk",
  "IT"  :  "www.example.com.it",
  "AU"  :  "www.example.com.au",
  "NZ"  :  "www.example.com.au",
  "AQ"  :  "www.example.co.aq",
}

ディクショナリ項目を個別に更新する

新しいサービスのバージョンを作成することなく、任意のディクショナリ項目を更新することができます。例えば、既存のディクショナリ項目を更新するために以下のような位置情報テーブルへの API コールを行います。

1
curl -X PATCH -H 'Fastly-Key: FASTLY_API_TOKEN' -d 'item_value=www.example.co.uk' "https://api.fastly.com/service/<service_id>/dictionary/<dictionary_id>/item/NZ"

以下のレスポンスが返されます。

1
2
3
4
5
6
{
  "dictionary_id": "<dictionary_id>",
  "item_key": "NZ",
  "item_value": "www.example.co.uk",
  "service_id": "<service_id>"
}

生成された VCL のテーブルは、新しいディクショナリ項目で更新され以下のようになります。

1
2
3
4
5
6
7
8
table geoip_redirect {
  "GB"  :  "www.example.co.uk",
  "IE"  :  "www.example.co.uk",
  "IT"  :  "www.example.com.it",
  "AU"  :  "www.example.com.au",
  "NZ"  :  "www.example.co.uk",
  "AQ"  :  "www.example.co.aq",
}

ディクショナリ項目の一括更新

1回の API コールで最大1,000件のディクショナリ項目を更新することができます。バッチの更新では、以下の操作が可能です。

  • Upsert - 項目が存在しない場合は作成し、そうでない場合は既存の項目を変更します。
  • Create - 新しい項目を作成しますが、既存の項目は更新されません。
  • Update - 既存の項目を更新しますが、項目が存在しない場合は新規作成しません。
  • Delete - ディクショナリから項目を永久に削除します。

例えば、位置情報テーブルの既存のディクショナリ項目を一括更新する場合、以下のような JSON エンコードされたデータを含む batch.json という名前の新しいファイルを作成します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
{
  "items": [
    {
      "op": "create",
      "item_key": "JP",
      "item_value": "www.example.co.jp"
    },
    {
      "op": "update",
      "item_key": "GB",
      "item_value": "www.example.co.uk"
    },
    {
      "op": "delete",
      "item_key": "IT"
    }
  ]
}

次に、以下のような API コールを行います。

1
curl -X PATCH -H 'Content-Type: application/json' -H 'Fastly-Key: FASTLY_API_TOKEN' -d @batch.json "https://api.fastly.com/service/<service_id>/dictionary/<dictionary_id>/items"

詳細は API に関するドキュメントをご参照ください。

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

テーブルから項目を削除するには、以下の API コールを行います。

1
curl -X DELETE -H 'Fastly-Key: FASTLY_API_TOKEN' https://api.fastly.com/service/<service_id>/dictionary/<dictionary_id>/item/NZ

ディクショナリ項目の作成や更新の場合とは異なり、この API コールはレスポンスを返しません。

Back to Top