Skip to content

Azure Functions

Azure Functions は Microsoft Azure のサーバーレスプラットフォームです。 イベントに応じてコードを実行でき、自動でコンピューティングリソースを管理します。

Hono は Azure Functions のために作られたわけではありませんが、 Azure Functions Adapter を使うことでうまく動かすことができます。

Node.js 18 以上の Azure Functions V4 で動作します。

1. CLI をインストールする

Azure Function を作るために、 Azure Functions Core Tools をインストールする必要があります。

macOS では:

sh
brew tap azure/functions
brew install azure-functions-core-tools@4

他の OS では:

2. セットアップ

TypeScript Node.js V4 プロジェクトをカレントディレクトリに作ります。

sh
func init --typescript

ホストのデフォルトプレフィックスを変更するには、 host.json のルートに以下のプロパティを追加します:

json
"extensions": {
    "http": {
        "routePrefix": ""
    }
}

INFO

Azure Functions でデフォルトのルートプレフィックスは /api です。 上のように変更しない場合は、 Hono の全てのルートを /api から初めてください。

Hono と Azure Functions Adapter をインストールする準備ができました:

sh
npm i @marplex/hono-azurefunc-adapter hono
sh
yarn add @marplex/hono-azurefunc-adapter hono
sh
pnpm add @marplex/hono-azurefunc-adapter hono
sh
bun add @marplex/hono-azurefunc-adapter hono

3. Hello World

src/app.ts を作ります:

ts
// src/app.ts
import { Hono } from 'hono'
const app = new Hono()

app.get('/', (c) => c.text('Hello Azure Functions!'))

export default app

src/functions/httpTrigger.ts を作ります:

ts
// src/functions/httpTrigger.ts
import { app } from '@azure/functions'
import { azureHonoHandler } from '@marplex/hono-azurefunc-adapter'
import honoApp from '../app'

app.http('httpTrigger', {
  methods: [
    //Add all your supported HTTP methods here
    'GET',
    'POST',
    'DELETE',
    'PUT',
  ],
  authLevel: 'anonymous',
  route: '{*proxy}',
  handler: azureHonoHandler(honoApp.fetch),
})

4. 実行

開発サーバーをローカルで実行し、 http://localhost:7071 を Web ブラウザで開きます。

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

5. デプロイ

INFO

Azure にデプロイする前に、クラウドインフラストラクチャリソースを作る必要があります。 Microsoft のドキュメントを読んでください。 Create supporting Azure resources for your function

プロジェクトをビルドしてデプロイします:

sh
npm run build
sh
yarn build
sh
pnpm build
sh
bun run build

プロジェクトを自分の Azure Cloud のファンクションアプリケーションにデプロイするために、 <YourFunctionAppName> を自分のアプリの名前に変えます。

sh
func azure functionapp publish <YourFunctionAppName>

Released under the MIT License.