Cloudflare Workers からMomento Cacheを呼び出す その2 (WEB-SDK版)
Cloudflare Workers からMomento Cacheを呼び出すという記事をアップしました。Momentoからは2種類のDeploy方法が提供されています。http-api
版とweb-sdk
版です。
前回の記事ではhttp-api
版を触りましたが、今回の記事ではweb-sdk
版を触ります。
早速やってみる
まずは前回の記事を終わらせておきましょう。完了したら作業開始です。手順はここにあります。 以下の記載がありました。
The Web SDK is heavier-weight than using Momento's HTTP API; you need to add a dependency on the SDK. However, it supports the full Momento API (including collections like Dictionaries and SortedSets, plus the ability to publish to Momento Topics). It also has a complete TypeScript/JavaScript API that makes it simpler to write code to interact with Momento. This can save you time and effort when developing your Worker.
HTTP-API版に比べると少し処理が重たいようです。パフォーマンスにこだわっているんだなぁ、と感じました。この辺り技術に正直なのはCloudflareと少し似ているかもしれないです。まず以下のコマンドでSDKを展開します。
git clone https://github.com/momentohq/client-sdk-javascript.git
cd client-sdk-javascript/examples/cloudflare-workers/web-sdk
npm install
その後wrangler.toml
を以下のように修正します。
name = "momento-cloudflare-worker-web"
main = "src/worker.ts"
compatibility_date = "2023-07-10"
[vars]
MOMENTO_CACHE_NAME = "demo-cache"
#
を取り除いて使いたいキャッシュの名前を"
で囲んで入力します。
次に.dev.var
を修正します。
MOMENTO_API_KEY
となっていますが、正しくはMOMENTO_AUTH_TOKEN
なのでそれに書き直します。
MOMENTO_AUTH_TOKEN="ey<snip>=="
完了したら
npm run deploy
でデプロイします。以下のようにvalue
と値が出てくれば完了です。
少しだけ中身をみてみる
HTTP-API
の時は以下でclient
を宣言し
const client = new MomentoFetcher(env.MOMENTO_AUTH_TOKEN, env.MOMENTO_REST_ENDPOINT);
このように値を書き込んでいました
const setResp = await client.set(cache, key, value);
Web-SDK
では
const momento = new CacheClient({
configuration: Configurations.Laptop.v1(),
credentialProvider: CredentialProvider.fromString({
authToken:env.MOMENTO_AUTH_TOKEN
}),
defaultTtlSeconds: 60,
});
const client = new MomentoFetcher(momento);
でクライアントを作成し
await client.set(cache, key, value);
で値を書き込んでいます。
Web-SDK
はHTTP-API
と異なりSDKに依存する分、環境依存が少なく、Topicsの実装、WebSocket通信の実現等より複雑な処理ができるとのことです。私の現時点での知識ではこれ以上解説ができませんので、きになるかたは
でMomentoのアドボケイトの方に聞いてみましょう。
Discussion