Deno KV を Deno Deploy で使う

| 4 min read
Author: masahiro-kondo masahiro-kondoの画像

先日の記事「Deno のビルトイン key-value データベース Deno KV が登場」ではローカルで試しただけでした。

クローズドベータが使えるようになったら Deno Deploy で試してみたいと思います。

と書いた通り Deno KV クローズドベータの waiting list に登録していました。1週間ぐらいでインビテーションがきて筆者の Deno Deploy アカウントで利用できるようになりました。

Deno Deploy にデプロイ

#

ということで、早速先日の記事で作成したプロジェクトを使ってデプロイしていきます。

Deno Depoly のコンソールでプロジェクトを作成します。

New Project

Deploy from GitHub repository を選んで、リンク対象の GitHub リポジトリを選択します。

Select GitHub repo

Git Integration は Automatic でよいです。コードが書かれたファイル(ここでは mod.ts) を選択します。

deploy from github repo

Information

Deno Deploy での Deploy 方法については以下の記事に書いています。Git Integration の種類についても触れています。

Deno を始める - 第6回 (Deno Deploy で静的ファイルを配信)

リポジトリをリンクしてしばらくするとデプロイが完了し、サイトのドメインが確定しました。

Deployed

動作確認

#

デプロイされたエンドポイントの API を叩きました。前回記事では key-value の value だけ返していましたが、key を含めて返すようにしています。

$ curl https://kondoumh-deno-serve-kv.deno.dev/books/978-1-09-123456-2 | jq .
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   143  100   143    0     0    530      0 --:--:-- --:--:-- --:--:--   539
{
  "key": [
    "books",
    "978-1-09-123456-2"
  ],
  "value": {
    "title": "The Great Gatsby",
    "author": "F. Scott Fitzgerald"
  },
  "versionstamp": "00000619c4832d3e0000"
}

$ curl https://kondoumh-deno-serve-kv.deno.dev/books | jq .
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   549  100   549    0     0    558      0 --:--:-- --:--:-- --:--:--   561
[
  {
    "key": [
      "books",
      "978-1-09-123456-2"
    ],
    "value": {
      "title": "The Great Gatsby",
      "author": "F. Scott Fitzgerald"
    },
    "versionstamp": "00000619c4832d3e0000"
  },
  {
    "key": [
      "books",
      "978-1-09-123456-3"
    ],
    "value": {
      "title": "The Grapes of Wrath",
      "author": "John Steinbeck"
    },
    "versionstamp": "00000619c4859a8f0000"
  },
  {
    "key": [
      "books",
      "978-1-09-123456-4"
    ],
    "value": {
      "title": "Nineteen Eighty-Four",
      "author": "George Orwell"
    },
    "versionstamp": "00000619c48803060000"
  }
]

登録も動きました。

$ curl -X POST -H "Content-Type: application/json" https://kondoumh-deno-serve-kv.deno.dev/books -d '{"isbn":"978-1-09-123456-5","title":"deno book", "author":"mh"}'
00000618a8ceaea50000

ローカルでの開発時もそうでしたが、データベース設定は一切なしで使えているので完全マネージドな環境ですね。

KV の管理画面

#

サイトの管理画面にも KV が Beta として追加されました。

KV を使っているプロジェクトでは、データ内容とキーによる検索が可能でした。
kv beta

KV を使っていないプロジェクトでは当然何も出ていません。

no kv

Information

クローズドベータですが、守秘義務に関する条項は見当たらなかったのでスクリーンショットを掲載しています。

最後に

#

以上、Deno Deploy で Deno KV を使用するコードをデプロイして動作確認してみました。Geo レプリケーションされた完全マネージドな KVS を使ったアプリを TypeScript ファイル1個でデプロイできる手軽さは魅力的ですね。

豆蔵デベロッパーサイト - 先週のアクセスランキング
  1. 基本から理解するJWTとJWT認証の仕組み(2022-12-08)
  2. 直感が理性に大反抗!「モンティ・ホール問題」(2022-07-04)
  3. Nuxt3入門(第4回) - Nuxtのルーティングを理解する(2022-10-09)
  4. Nuxt3入門(第8回) - Nuxt3のuseStateでコンポーネント間で状態を共有する(2022-10-28)
  5. Podman Desktopがv1.0になったのでwindows版を試してみたところ、気付いたらv1.1に上がるくらいに機能豊富だった話(2023-06-09)
  6. Nuxt3入門(第1回) - Nuxtがサポートするレンダリングモードを理解する(2022-09-25)
  7. VS Code で .NET MAUI の開発環境を構築する(macOS/iOS)(2023-08-14)
  8. Pytestを使ってみる(その2:VSCode拡張機能編)(2023-03-05)
  9. GitHub Actions - 構成変数(環境変数)が外部設定できるようになったので用途を整理する(2023-01-16)
  10. 統計学で避けて通れない自由度の話(2022-06-20)