コンテンツにスキップ

Azure Functions

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

Hono は、当初 Azure Functions 向けに設計されていませんでした。しかし、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 ブラウザーで https://#: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 ライセンスに基づいてリリースされています。