Skip to content

Fastly Compute

Fastly Compute は好きな言語で書かれたコードをグローバルネットワーク上で実行できる高度なエッジコンピューティングシステムです。 Hono はもちろん Fastly Compute 上でも動作します。

Fastly CLI を使用すると、少しのコマンドでアプリケーションをローカルで開発して、公開できます。

1. Setup

スターターは Fastly Compute でも使用できます。 "create-hono" コマンドでプロジェクトを開始しましょう。 fastly テンプレートを選択します。

sh
npm create hono@latest my-app
sh
yarn create hono my-app
sh
pnpm create hono my-app
sh
bun create hono@latest my-app
sh
deno init --npm hono my-app

my-app に移動して依存関係をインストールします。

sh
cd my-app
npm i
sh
cd my-app
yarn
sh
cd my-app
pnpm i
sh
cd my-app
bun i

2. Hello World

src/index.ts を変更します:

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. Run

ローカルで開発サーバーを起動し、ブラウザで http://localhost:7676 にアクセスしてください。

sh
npm run start
sh
yarn start
sh
pnpm run start
sh
bun run start

4. デプロイ

ビルドして、あなたの Fastly アカウントにデプロイするには以下のコマンドを実行します。 あなたがアプリケーションを始めてデプロイする場合、アカウントに新しいサービスを作成するように求められます。

まだアカウントを持っていない場合は、作成する必要があります

sh
npm run deploy
sh
yarn deploy
sh
pnpm run deploy
sh
bun run deploy

バインディング

Fastly Compute では、高速なプラットフォームリソースをバインドすることができます。 たとえば、KV ストア、 Config ストア、 Secret ストア、バックエンド、アクセス制御リスト、名前付きログストリーム、環境変数 などです。 c.env を通してアクセスすることができ、個々の SDK の型があります。

これらのバインディングを使用するには、 @fastly/hono-fastly-compute から fire の代わりに buildFire を import します。bindings を定義して、 buildFire() に渡して fireを取得します。 Hono を構築する際に、 Env 型を定義するために fire.Bindings を使用してください。

ts
// src/index.ts
import { buildFire } from '@fastly/hono-fastly-compute'

const fire = buildFire({
  siteData: 'KVStore:site-data', // "site-data" という名前の KV ストアがあります
})

const app = new Hono<{ Bindings: typeof fire.Bindings }>()

app.put('/upload/:key', async (c, next) => {
  // 例. KV ストア にアクセスします
  const key = c.req.param('key')
  await c.env.siteData.put(key, c.req.body)
  return c.text(`Put ${key} successfully!`)
})

fire(app)

このドキュメントは非公式の日本語翻訳版です。
Released under the MIT License.