Fastly Compute
Fastly Compute は、お好みの言語で記述したコードを Fastly のグローバルエッジネットワークで実行する、高度なエッジコンピューティングシステムです。Hono は Fastly Compute 上でも動作します。
Fastly CLI を使えば、アプリケーションをローカルで開発し、数個のコマンドで公開できます。CLI はテンプレートの一部としてローカルに自動インストールされます。
1. セットアップ
Fastly Compute 向けのスターターテンプレートがあります。 「create-hono」コマンドでプロジェクトを開始します。 この例では fastly テンプレートを選択します。
npm create hono@latest my-appyarn create hono my-apppnpm create hono my-appbun create hono@latest my-appdeno init --npm hono my-appmy-app に移動して依存関係をインストールします。
cd my-app
npm icd my-app
yarncd my-app
pnpm icd my-app
bun i2. Hello World
src/index.ts を編集します。
// src/index.ts
import { Hono } from 'hono'
import { fire } from '@fastly/hono-fastly-compute'
const app = new Hono()
app.get('/', (c) => c.text('Hello Fastly!'))
fire(app)NOTE
アプリケーションのトップレベルで @fastly/hono-fastly-compute' の fire(または buildFire())を使う場合は、'hono/quick' よりも 'hono' の Hono が適しています。fire によって、アプリケーションの初期化段階でルーターの内部データが構築されるためです。
3. 実行
開発サーバーをローカルで起動し、Web ブラウザーで http://localhost:7676 にアクセスします。
npm run startyarn startpnpm run startbun run start4. デプロイ
アプリケーションをビルドして Fastly アカウントにデプロイするには、次のコマンドを入力します。初回のデプロイでは、アカウントに新しいサービスを作成するよう求められます。
アカウントがない場合は、Fastly アカウントを作成する必要があります。
npm run deployyarn deploypnpm run deploybun run deployバインディング
Fastly Compute では、KV ストア、設定ストア、シークレットストア、バックエンド、アクセス制御リスト、名前付きログストリーム、環境変数などの Fastly プラットフォームリソースをバインドできます。c.env を通じてアクセスでき、それぞれの SDK の型が付与されます。
これらのバインディングを使うには、@fastly/hono-fastly-compute から fire の代わりに buildFire をインポートします。バインディングを定義して buildFire() に渡し、fire を取得します。続いて、Hono を構築する際に fire.Bindings を使って Env 型を定義します。
// src/index.ts
import { buildFire } from '@fastly/hono-fastly-compute'
const fire = buildFire({
siteData: 'KVStore:site-data', // I have a KV Store named "site-data"
})
const app = new Hono<{ Bindings: typeof fire.Bindings }>()
app.put('/upload/:key', async (c, next) => {
// e.g., Access the KV Store
const key = c.req.param('key')
await c.env.siteData.put(key, c.req.body)
return c.text(`Put ${key} successfully!`)
})
fire(app)