0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Azure Functions】デプロイスロットを用いた Node.js 20 から Node.js 22 への移行手順(ポータル操作)

Last updated at Posted at 2025-10-14

概要

 Node.js 20 LTS のサポートが2026年4月30日までのため、サポート期間内に Node.js 22 LTS へ移行する必要がある。
 Azure Functions では、デプロイスロットを用いることで、ダウンタイムを最小限に抑えて移行できる。デプロイスロットを用いた移行手順を備忘録として簡単にまとめる
(今回は関数アプリの OS が Windows の場合を例にしている。Linux の場合は環境変数名が一部異なるため、適宜読み替えること)

構成

  • 前提: HTTPトリガーの関数をデプロイした関数アプリが既に作成済み
  • スタック: Node.js 20 LTS
  • OS: Windows
  • ランタイム バージョン: 4.1043.200.25453

公式ドキュメントによれば、Node.js 22 を使用する場合は、ランタイム バージョン 4.25 以降が必要とされている。

ランタイムバージョンの指定は既に 4 以上を指定している。

4.25 以上のバージョンを使う場合は、環境変数に正確なバージョンを指定する必要があると推測している。

Node.js 22 準拠のスクリプトをデプロイした後もランタイムバージョンは変化せず、テンプレートから生成したスクリプトは問題なく動作した。

手順

1. デプロイスロットの作成

  1. 関数アプリの概要の画面から、サイドバーの「デプロイ スロット」を選択する


  2. 「Add slot」を選択する


  3. Name の入力欄に、任意の名称を入力する


  4. 「Add」を選択する
    スクリーンショット 2025-10-14 224433.png


  5. Successfully created slot '<デプロイスロット名>' という通知を確認する


2. デプロイスロットのスタックを Node.js 22 に変更する

  1. デプロイスロット一覧から、先ほど作成したデプロイスロットを選択する
    一覧における名称は、<関数アプリ名>-<デプロイスロット名>で表記されるため注意


  2. デプロイスロットの概要に遷移する


  3. サイドバーから 「設定」>「環境変数」を選択する


  4. 環境変数一覧に遷移したら、下記項目の値を確認する
    「値を表示する」を選択することで値が確認できる

    • FUNCTIONS_EXTENSION_VERSION : ~4
    • FUNCTIONS_WORKER_RUNTIME: node
    • WEBSITE_NODE_DEFAULT_VERSION : ~20


  5. サイドバーから「構成」を選択する


  6. 構成の画面に遷移することを確認する


  7. 「全般設定」を選択する


  8. Node.js バージョンが Node.js 20 LTS であることを確認する


  9. Node.js バージョンを Node.js 22 に変更する


  10. 「保存」を選択する


  11. 「続行」を選択する


  12. 「Web アプリ設定が正常に更新されました」という通知を確認する


  13. 環境変数の一覧に移動し、WEBSITE_NODE_DEFAULT_VERSION~22 であることを確認する


3. Node.js 22 準拠の関数をデプロイ

  1. ローカル開発環境で Node.js 22 に準拠した関数を作成し、デプロイスロットにデプロイする

    今回は、func new --name httpTrigger2 --template "HTTP trigger" --authlevel anonymous で HTTPトリガーのサンプルスクリプトを生成し、func azure functionapp publish func-app2 --slot coding でデプロイした。

    デプロイ完了時に URL が出力されるため、アクセス可能か確認する。

    HTTP トリガーではない場合、デプロイが完了した時点で関数が実行されるため、多重実行の可能性がある点に注意する。これを避けるには、デプロイ前に開発用のデプロイスロットの関数アプリの動作を停止させる必要がある。

    停止中にデプロイを行うと、コンソールではエラーが発生するが、デプロイ自体は問題なくできているようで、デプロイ後に関数アプリを開始し、関数のテストを行ったところ問題なく実行できた。


  2. デプロイが完了したら、概要の画面に戻り、デプロイした関数が追加されていることを確認する


4. デプロイスロットと本番環境をスワップする

  1. デプロイスロットの画面に移動し、「Swap」を選択する


  2. Source は修正後の関数を含むデプロイスロットを、Target は 修正対象の関数アプリを選択する


  3. 設定項目が正しいことを確認する


  4. 「Start Swap」を選択する


  5. 「Successfully swapped slots...」という通知を確認する


  6. 関数アプリの概要に戻り、関数名がデプロイコンテナにデプロイした関数と同じであることを確認する


  7. 関数の詳細を開き、修正後の関数であることを確認する


備考

  • CORS 設定は「API」>「CORS」から設定可能


  • ポータルから関数のテストを行う場合は、https://portal.azure.com が許可される元のドメインに登録されている必要がある

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?