Azure Functionsへの手動デプロイ:Azure CLIのZIPデプロイ(config-zip)
はじめに
こんにちは、株式会社メンバーズ 生成AI基盤チームの谷森です。
今回は前回の記事で作成したAzure Functionsに手動でコードデプロイする方法を紹介します。
本記事は「CI/CD前の試行」や「小さな修正の即時反映」に向け、Azure CLIのconfig-zipを使ってAzure Functions(Function App)へ“最短で安全に”手動デプロイする方法をまとめたものです。
初学者でも迷わないよう、前提準備→ZIPの正しい作り方→デプロイ→検証→失敗時の対処を順に解説します。
最後にGitHub Actionsでの自動化への橋渡しも示します。
前回作成したAzureリソース
- Azure Functions
- Azure API Management
- Azure App Service Plan
- Azure Storage Account
- Azure Log Analytics Workspace
- Azure Application Insights
ディレクトリ構造
前回作成したディレクトリ内にAzure Functionsコードを下記のように格納します。
terraform-rag(任意のGitHubリポジトリ名)
├── .github
│ ├── workflows
│ │ └── terraform-apply.yml(任意のGitHub Actionsコードファイル名)
├── functions(任意のAzure Functionsコードディレクトリ名)
│ ├── rag-inquiry(任意のAzure Functions名)
│ └── rag-insertdb(任意のAzure Functions名)
├── terraform(任意のTerraformコードディレクトリ名)
│ ├── .terraform.lock.hcl
│ ├── main.tf
│ ├── rg.tf
│ └── variables.tf
├── .gitignore
└── README.mdコードデプロイ
作成したAzure Functionsのプランによって可能なコードデプロイ方法が異なります。
後にコードデプロイもGitHub Actionsで自動化する予定なので今回はZIPデプロイを使用します。
※参考:GitHub Actions を使用した継続的デリバリー
手順
1. リポジトリの取得
ローカル環境にGitHubリポジトリをクローンします。
2. ZIPファイルの作成
デプロイしたいコードが記載されているファイルを下記コマンドでZIP化します。
※下記コマンドでは一例としてrag-insertdbファイルをZIP化しています。
zip -r rag-insertdb.zip functions/rag-insertdb3. config-zipコマンドでのコードデプロイ
ご自身が指定したZIPファイルが作成されたことを確認して下記コマンドでコードデプロイします。
az functionapp deployment source config-zip \\
--resource-group "<リソースグループ名>" \\
--name "<Azure Functionsリソース名>" \\
--src rag-insertdb.zip4. コードデプロイの確認
下記コマンドを実行することで指定したAzure Function App内にデプロイされているすべての関数(Functions)のリストをテーブル形式で取得することができます。
az functionapp functions list \
--resource-group "<リソースグループ名>" \
--name "<Function App名>" -o tableコードデプロイが完了すると下記のようにAzure ポータルで確認できます。(反映されるまでには数分かかります。)

よくあるエラーと対処
- Malformed zip package / 関数が表示されない:ZIPのルートが誤っている場合は
host.jsonを含むアプリルートをZIP化し直すと解消します。 - ランタイム不整合(Python/Nodeのバージョン違い):Function Appのスタック設定とアプリ実装のバージョンを一致させると解消します。
- 設定値不足:接続文字列や環境変数が必要な場合はアプリケーション設定に追加すると解消します(
az functionapp config appsettings set)。
まとめ
今回はGitHub ActionsとTerraformで作成したAzure FunctionsにAzure CLIを使って手動でコードをデプロイする方法をご紹介しました。
次回はコードデプロイの自動化をご紹介できればと考えているのでそちらも参考にしていただけると幸いです。
この記事を書いた人

What is BEMA!?
Be Engineer, More Agile
Advent Calendar!
Advent Calendar 2024





