🗂️

Fastly Compute 永続ストレージへの読み書き (1) Dynamic Configurationの利用

2023/12/22に公開

この記事は Fastly Compute (旧 Compute@Edge) 一人アドベントカレンダー 19 日目の記事です。

前回までに紹介してきた揮発性ストレージを利用した API 群は、パフォーマンスを犠牲にすることなく各 SDK からアクセスが可能でかつ無料で利用できる非常に使い勝手の良いソリューションですが、一方でデータを永続化したい場合には別な方法が必要になってきます。本稿では永続ストレージの第一弾として、ConfigStore と SecretStore (Beta) というデータストアを紹介します。

ConfigStore の仕様

  • 汎用的に利用可能なオンメモリのデータストア
  • API と SDK の両方からアクセス可能 (但し SDK からは Read のみ可能で Write 操作は不可)
  • 1 store あたり 500 エントリまで格納可能で、5 ストアまで利用可能
    • ストアは別途追加も可能
    • トライアルアカウント(Developerアカウント)の場合は 1 ストアを 100 エントリまで利用可能
  • 書き込み操作は 1 時間あたり 100 書き込みまでの制限あり
  • Key 名には 256 文字まで使用可能。使用可能文字に制限あり(詳細)
  • Value は 8000 文字まで格納可能

SecretStore (Beta) の仕様

  • Secret 等の秘匿性の高い情報を格納するために最適なオンメモリ[1]のデータストア
  • ConfigStore と同様に、API と SDK の両方からアクセスが可能(SDK からは Read のみが可能な点も ConfigStore と同様)
  • Key 名には 255 文字まで使用可能。使用可能文字に制限あり(詳細)
  • Secret には最大 64 KB のデータを格納可能

設定方法

ConfigStore を Compute のコード上から操作する前に、事前に以下のどちらかの方法でセットアップをしておく必要があります。CLI で設定する方法と GUI (Web のコントロールパネル) で設定する方法があり、以下で簡単に設定方法を紹介します。公式サイトに解説があるため詳しくはそちらを参照してください。

CLI で設定

以下ではサンプルとして my-app-setting という名称の ConfigStore を 1 つ作成し、その中に first-key:first-value というペアの key-value を挿入しています。

$ fastly config-store create --name=my-app-setting
$ fastly config-store-entry create -s kjNkPBpevMY639kZ0Lvd33 -k first-key --value first-value
$ fastly resource-link create -r kjNkPBpevMY639kZ0Lvd33 -s pDXZ9r1gbJkUoRabG1aRJ1 --version latest --autoclone
$ fastly service-version activate -s pDXZ9r1gbJkUoRabG1aRJ1 --version latest

ConfigStore の Entry が 2 コマンド目で作成されたら、Compute のサービスから接続するための Resource Link を作成し、作成されたサービスの最新バージョンを Activate するという手続きを行なっています。

GUI (Web のコントロールパネル)から設定

CLI と同様の手順を GUI 経由でも実行することができます。以下の Resource 画面から ConfigStore に必要な Key-Value ペアを挿入したら、画面右側にある Link to services ボタンをクリックして接続先のサービスを選択し、その後 Service を最新バージョンに Activate することで Compute のコード上から利用が可能になります。

実装例

上記設定までができてしまうと、紹介の必要がないくらい実装は簡単です。以下は ConfigStore の例ですが、SecretStore についてもほぼ同様の手続きで Read が可能です。

# Rust の場合
let store = ConfigStore::open("my-app-setting");
store.get("first-key")

# Go の場合
store, _ := configstore.Open("my-app-setting")
entry, _ := store.Get("first-key")

# JavaScript の場合
const store = new ConfigStore('my-app-setting');
console.log(store.get('first-key'));

まとめ

本稿では永続ストレージ編の第一回目として ConfigStore と SecretStore の概要を紹介しました。次回は SDK から Read のみでは Write も可能な拡張性に優れた KVStore について紹介してみたいと思います。

脚注
  1. オンメモリについての解説は公式ブログの次の一文を引用しています "Read at edge; Deployment flexibility and single microsecond edge decisions from memory" ↩︎

Discussion