ディクショナリについて
最終更新日 2022-10-06
ディクショナリは、データをキーバリューのペアとして保存できるコンテナーの一種であり、単一のバージョンにアタッチされることなく、サービス内で使用することができます。
ディクショナリを使用すると、次のように頻繁に繰り返されるステートメントを
1if (something == "value1") {2 set other = "result1";3} else if (something == "value2") {4 set other = "result2";5}
以下のように定数として機能する単一の関数に変換し、
1table things {2 "value1": "result1",3 "value2": "result2",4 ...5}6
7set other = table.lookup(things, something);
特定のバージョンに紐づけすることなく、ステートメントに簡単に変更を加えることができます。
ディクショナリの活用例
- 大規模なリファラーブロックリストの更新を必要とするコンテンツ共有およびソーシャルメディア
- キャッシュバスティングの推測を防ぐためにキーを検証したいモバイル広告主
- エッジで有効なユーザーキーを認証するお客様 (プライベートディクショナリに関するガイドを参照してください)
- 地理的な位置関係に基づいてユーザーを指定した国のサイトにリダイレクトしたいグローバルパブリッシャー
- 指定したオブジェクトのトークンチェックを実施したいイメージプロバイダー
- エッジで悪意のあるアクターをブロックしたい広告テクノロジー企業
- API 経由で簡単に値を変更できるバージョンのコントロールパネルをデプロイしているお客様
ディクショナリの仕組み
ディクショナリは、ディクショナリコンテナーとその中のディクショナリアイテムで構成されます。ディクショナリコンテナをサービスバージョンにアタッチし、そのサービスが有効化されると、その中のデータはバージョンレスになります。つまりディクショナリが作成された後、サービスのバージョンを増やすことなく、いつでもディクショナリ内のデータの追加や更新が可能です。
例えば、頻繁に変更されるリファラーブロックリストがあり、それをサービスと関連付けたいとします。サービスの設定が変更される場合、特に設定が前のバージョンにロールバックされる場合は、ブロックリストのリファラードメインを削除するよりも、サービス設定に残しておく方が望ましいことがあります。そのような場合にディクショナリが役立ちます。
ディクショナリの作成方法と使用方法
ディクショナリを作成し、サービス内で使用するには、まず空のディクショナリコンテナを作成します。そして、まだ有効化されておらず、ロックがかかっていない状態の作業バージョンのサービスにエントリーを追加します。ディクショナリは、以下を使用して作成することができます。
ヒント
プライベートディクショナリを作成して、コントロールパネルまたは API 経由では表示や読み込みができないディクショナリアイテムを保存することができます。
制約と考慮事項
ディクショナリを作成する際、以下の点に注意してください。
- カスタム VCL で作成されたディクショナリは、API または Dictionaries ページを使用して操作することができません。 カスタム VCL を使用して作成されたディクショナリコンテナは、必ずカスタム VCL で操作する必要があります。カスタム VCL 経由でアップロードされたディクショナリは、バージョンレスではありません。
- ディクショナリコンテナ、項目キー、およびそれらの値には固有の制限があります。 ディクショナリコンテナは 1000 項目に制限されています。ディクショナリ項目キーは、256 文字まで、値は 8000 文字までに制限されています。ディクショナリがこれらのリソース制限に近づいている場合は、サポートまでご連絡ください。より効率的な方法が見つかるようサポートします。
- ディクショナリ項目キーでは大文字と小文字が区別されます。 ディクショナリ項目名では大文字と小文字が区別されます。ディクショナリを設計する場合はこの点にご注意ください。
- ディクショナリのコンテンツは VCL として保存されます。 個人情報、シークレット、機密情報をディクショナリーや VCL に組み込んではいけません。Compliance and Law FAQ に Fastly が個人情報の保護をどのように行なっているかが詳しく記載されています。
ディクショナリに変更を加える際は、以下の点にご注意ください。
- ディクショナリコンテナを削除すると、編集中のサービスバージョンからのみ削除されます。 ディクショナリコンテナはバージョンに紐付けされており、クローンを作成したり元に戻すことができます。ディクショナリを使用する場合、できるだけ少ないステップで容易に設定を前のバージョンにロールバックできるよう、現在のサービスバージョンからディクショナリコンテナを削除するなどの操作が行なえるようになっています。
- ディクショナリコンテナを削除しても、その中のディクショナリ項目は削除されません。 ディクショナリコンテナ内の項目はバージョンレスです。サービスのバージョンが変わってもこれらのデータに引き続きアクセスできます。
- ディクショナリ項目の削除は恒久的です。 Fastly にデータは保存されないため、ディクショナリ項目を削除すると、エントリーはすべてのサービスバージョンから永久に削除されます。
- ディクショナリの変更に関するイベントログはありません。 ディクショナリ項目を追加、更新、削除した場合、その記録は残りません。変更の記録は、サービスバージョンを比較して、最初にディクショナリコンテナがそのサービスバージョンに関連付けられている点を表示するときのみ残されます。
重要
個人情報、シークレット、機密性の高いデータなどをディクショナリに含めたり、VCL に組み込んだりしないようにしてください。また Fastly はお客様のディクショナリのバージョン履歴を管理しません。Compliance and Law FAQ に Fastly が個人情報の保護をどのように行なっているかが詳しく記載されています。