やりたいこと
Azure Functions App をローカルで開発する際に多く使われているであろう、Azure Functions Core Tools で以前対応されていなかった Mac での実行がいつの間にか対応されていてテンションが上がったので記事にしてみます。
Azure Functions Core Tools
Azure の FaaS である Functions App の開発用ツール。
プロジェクトの作成やローカル実行など開発に必要な機能を CLI で行うことができる。
以前 (たぶん2022年〜2023年くらい?) は、Mac だと Python でのローカル実行がサポートされていなかったが、2024/06/09 時点 (v4 から?) で対応されローカル実行できるようになっていた!
VSCode の拡張機能でポチポチと GUI 操作することでプロジェクト作成〜デプロイまで行えますが、CI/CD や作業内容の再現性を考えると普段からコマンドで作業するのが良いと個人的には思っています (必要な手順をシェルスクリプトにまとめられますし)。
インストール
未インストールの場合は以下のコマンドでインストール。
brew tap azure/functions
brew install azure-functions-core-tools@4
アップデート
v3 以前をインストール済みの場合は以下コマンドでアップデート。brew upgrade
でも可。
brew tap azure/functions
brew install azure-functions-core-tools@4
# if upgrading on a machine that has 2.x or 3.x installed:
brew link --overwrite azure-functions-core-tools@4
2024/06/09 時点では、対応しているのは Python 3.11 までのようです (どこかに記載がありましたが改めて見つけられず… リンク無しです)。
3.12 で試してみたところ、ローカル実行がうまく行えませんでした。
開発手順
プロジェクト作成
まず Python の仮想環境を作成する。
python -m venv {ENV_NAME}
プロジェクトを作成する。
func init MyProjFolder --worker-runtime python --model V2
関数を作成する
以下コマンドで、HttpTrigger の関数をテンプレートから作成する。
func new --template "Http Trigger" --name MyHttpTrigger
ローカル実行
以下コマンドでローカル実行する。ローカルホストでホスティングされ、ブラウザや何らかのクライアントからアクセスすることで HttpTrigger の関数が実行される。
func start
終了するときは、Ctrl+C。
Azure へのデプロイ
Functions App はプロビジョニング済みである必要があります。
以下コマンドでデプロイできる。
func azure functionapp publish {FUNCTIONS_APP_NAME}
設定のフェッチ
Azure 上の Functions App に環境変数などを設定してコード内で実行している場合、ローカル実行時にそれらが必要になる。その際には、以下コマンドで設定ファイルをフェッチできる。
func azure functionapp fetch-app-settings {FUNCTIONS_APP_NAME}
逆に、ローカルの値を Azure 側に設定する場合は以下コマンド。
func azure functionapp publish {FUNCTIONS_APP_NAME} --publish-settings-only
ということで
Mac で Azure Functions Core Tools を使って、Python コードのローカル実行が可能になったという内容をまとめてみました。以前に Mac で開発していてローカル実行できず絶望したことがあったので、いつの間にか対応されていて非常に感動しました。
積極的にアップデートされているので、今後もいろいろと機能追加されるのではと思います。定期的にウォッチしていち早く気づけるようにしたいですね!
以上です。