ディクショナリについて

ディクショナリは、データをキーと値のペアとして保存できるコンテナーの一種であり、単一のバージョンにアタッチされることなく、サービス内で使用することができます。

ディクショナリを使用すると、次のように頻繁に繰り返されるステートメントを

1
2
3
4
5
if (something == "value1") {
set other = "result1";
} else if (something == "value2") {
set other = "result2";
}

以下のように定数として機能する単一の関数に変換し、

1
2
3
4
5
6
table things {
"value1": "result1",
"value2": "result2",
...
}
set other = table.lookup(things, something);

特定のバージョンに紐づけすることなく、ステートメントに簡単に変更を加えることができます。

ディクショナリの活用例

  • 大規模なリファラーブロックリストの更新を必要とするコンテンツ共有およびソーシャルメディア
  • キャッシュバスティングの推測を防ぐためにキーを検証したいモバイル広告主
  • エッジで有効なユーザーキーを認証するお客様 (プライベートディクショナリに関するガイドを参照してください)
  • 地理的な位置関係に基づいてユーザーを指定した国のサイトにリダイレクトしたいグローバルパブリッシャー
  • 指定したオブジェクトのトークンチェックを実施したいイメージプロバイダー
  • エッジで攻撃者をブロックしたい広告テクノロジー企業
  • API 経由で簡単に値を変更できるバージョンのコントロールパネルをデプロイしているお客様

ディクショナリの仕組み

ディクショナリは、ディクショナリコンテナとその中のディクショナリ項目で構成されます。ディクショナリコンテナをサービスバージョンにアタッチし、そのサービスが有効化されると、その中のデータはバージョンレスになります。つまりディクショナリが作成された後、サービスのバージョンを増やすことなく、いつでもディクショナリ内のデータの追加や更新が可能です。

例えば、頻繁に変更されるリファラーブロックリストがあり、それをサービスと関連付けたいとします。サービスの設定が変更される場合、特に設定が前のバージョンにロールバックされる場合は、ブロックリストのリファラードメインを削除するよりも、サービス設定に残しておく方が望ましいことがあります。そのような場合にディクショナリが役立ちます。

ディクショナリの作成方法と使用方法

ディクショナリを作成し、サービス内で使用するには、まず空のディクショナリコンテナを作成します。そして、まだ有効化されておらず、ロックがかかっていない状態の作業バージョンのサービスにエントリーを追加します。ディクショナリは、以下を使用して作成することができます。

ヒント

プライベートディクショナリを作成して、コントロールパネルまたは API 経由では表示や読み込みができないディクショナリ項目を保存することができます。

制約と考慮事項

ディクショナリを作成する際、以下の点に注意してください。

  • カスタム VCL で作成されたディクショナリは、API または Dictionaries ページを使用して操作することができません。 カスタム VCL を使用して作成されたディクショナリコンテナは、必ずカスタム VCL で操作する必要があります。カスタム VCL 経由でアップロードされたディクショナリは、バージョンレスではありません。
  • ディクショナリコンテナ、項目キー、およびそれらの値には固有の制限があります。 ディクショナリコンテナは1000項目に制限されています。ディクショナリ項目キーは、255文字まで、値は8000文字までに制限されています。ディクショナリがこれらのリソース制限に近づいている場合は、サポートまで連絡してください。より効率的な方法が見つかるようサポートします。
  • ディクショナリ項目キーでは大文字と小文字が区別されます。 ディクショナリ項目名では大文字と小文字が区別されます。ディクショナリを設計する場合はこの点にご注意ください。
  • ディクショナリのコンテンツは VCL として保存されます。 個人情報が VCL に組み込まれることがないようにしてください。Fastly が個人情報の保護にどのように対応しているかについて、詳しくは Compliance and Law FAQ をご覧ください。

ディクショナリに変更を加える際は、以下の点にご注意ください。

  • ディクショナリコンテナを削除すると、編集中のサービスバージョンからのみ削除されます。 ディクショナリコンテナはバージョンに紐付けされており、クローンを作成したり元に戻すことができます。ディクショナリを使用する場合、できるだけ少ないステップで容易に設定を前のバージョンにロールバックできるよう、現在のサービスバージョンからディクショナリコンテナを削除するなどの操作が行なえるようになっています。
  • ディクショナリコンテナを削除する場合、その中のディクショナリ項目は削除されません。 ディクショナリコンテナ内のディクショナリ項目はバージョンレスです。サービスのバージョンが変わってもこれらのデータに引き続きアクセスできます。
  • ディクショナリ項目の削除は恒久的です。 Fastly にデータは保存されないため、ディクショナリ項目を削除すると、エントリーはすべてのサービスバージョンから永久に削除されます。
  • ディクショナリの変更に関するイベントログはありません。 ディクショナリの項目を追加、更新、削除しても、その記録は残りません。サービスバージョンを比較することで、ディクショナリコンテナが最初にサービスバージョンに関連付けられた時点を確認することはできますが、それ以外の変更の記録を確認することはできません。
重要

個人情報、シークレット、機密性の高いデータなどをディクショナリに含めたり、VCL に組み込んだりしないようにしてください。また、Fastly はお客様のディクショナリのバージョン履歴を管理しません。Fastly が個人情報の保護にどのように対応しているかについて、詳しくは Compliance and Law FAQ をご覧ください。


翻訳についての注意事項
このガイドは役に立ちましたか?

このフォームを使用して機密性の高い情報を送信しないでください。サポートが必要な場合は、サポートチームまでご連絡ください。このフォームは reCAPTCHA によって保護されており、Google のプライバシーポリシー利用規約が適用されます。