本文へ移動

Azure Functions ​

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

Hono はもともと Azure Functions 向けに設計されていませんが、Azure Functions アダプター を使うことで動作させられます。

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 オブジェクトに次のプロパティを追加してください。

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

情報

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

次のコマンドで Hono と Azure Functions アダプターをインストールできます。

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. 実行 ​

開発サーバーをローカルで起動し、Web ブラウザーで http://localhost:7071 にアクセスします。

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

5. デプロイ ​

情報

Azure にデプロイする前に、クラウドインフラストラクチャにいくつかのリソースを作成する必要があります。Microsoft のドキュメントの関数をサポートする Azure リソースの作成 を参照してください。

デプロイ用にプロジェクトをビルドします。

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

Azure クラウドの関数アプリにプロジェクトをデプロイします。<YourFunctionAppName> をアプリの名前に置き換えてください。

sh
func azure functionapp publish <YourFunctionAppName>

MIT ライセンスで公開されています。