概要
デプロイスロットは、関数アプリで "スロット" と呼ばれる別のインスタンスを実行する機能です。
スロットごとに稼働する関数や環境変数は独立しています。
デプロイスロットに関数をデプロイする方法についてまとめます。
構成
- 前提:
- 関数アプリとデプロイスロットが作成済み
- ローカル環境にAzure CLIがインストールされている
- 作業前にAzure CLIでログインしている
- スタック:
- 運用スロット: Node.js 20 LTS
- デプロイスロット: Node.js 22 LTS
- Nodeポータブル版のダウンロード
Node.js 公式
https://nodejs.org/ja/download
Node.jsを既にインストールしている場合は不要です。
今回は環境依存をなるべく少なくするため、ポータブル版のNode.jsを使用します。
作業ディレクトリにnodeというフォルダを作成し、このフォルダに展開しました。
- Azure Functions Core Tools のインストール
.\node\npm.cmd install -g azure-functions-core-tools@4 --prefix .\tools
- 関数アプリのひな型作成
.\tools\func.cmd init . --worker-runtime node --language typescript --model v4
- 関数アプリのテンプレート作成
.\tools\func.cmd new --name HttpTrigger1 --template "HTTP trigger" --authlevel anonymous
-
.funcignoreにnodeやtoolsフォルダを追加する
- ビルド
.\node\npm.cmd run build
- デプロイ
.\tools\func.cmd azure functionapp publish <関数アプリ名> --slot <デプロイスロット名>
※ 先にデプロイスロットのスタック設定のバージョンをNode.js 22に変更しておくこと。