はじめに
ちょっとだけ詰まったので、備忘録代わりに残しておきます。
今回, Azure Functions のローカル実行をするために App Settings が必要になったため こちらの記事 を参考に App Settings を Azure Functions 上から取得しようと試みたのですが、いくつかの箇所で引っ掛かってしまいました。
そこでその引っ掛かった箇所について情報を共有しておきたいと思います。
手順
Azure CLI
そもそも論ですが, 今回の作業を行うにあたっては Azure CLI が必須です。
そのため Powershell 用の Azure CLI ツールを導入する必要があります。
Invoke-WebRequest -Uri https://aka.ms/installazurecliwindows -OutFile .\AzureCLI.msi; Start-Process msiexec.exe -Wait -ArgumentList '/I AzureCLI.msi /quiet'; rm .\AzureCLI.msi
Mac の場合は こちらの方法 を参考に導入可能です。
brew update && brew install azure-cli
Azure Functions Core Tools
まず 2020/07/19 現在, azure-functions-cli
は deprecated となっているためインストールすることができません。
その代わりに azure-functions-core-tools がリリースされているので, こちらをインストールするようにします。
今回は v3 をインストールしました。
npm i -g azure-functions-core-tools@3 --unsafe-perm true
これで晴れて funcコマンド
が利用できるようになります。
az login / az account set
上記を導入した状態ですぐに func コマンドを実行してもエラーが発生してしまい, 正常に動作しません。
これは当たり前と言えば当たり前なのですが, Azure にログインしていない状態でリソースにアクセスしようとしているため発生しています。
そのため, まずは何はともあれログインをしなければなりません。
以下のコマンドを実行し, ログインダイアログに従ってログインを済ませてください。
az login
また, サブスクリプションが複数ある場合には利用するサブスクリプションを選択しなければなりません。
利用するサブスクリプションを選択していない状態で func コマンドを実行すると以下のようなエラーが発生してしまいます。
Can't find app with name "AZURE_FUNCTION_NAME"
そのため az account set
コマンドを利用してサブスクリプションを設定します。
※ 参考: 複数の Azure サブスクリプションの使用
# 以下のコマンドで選択できるサブスクリプションの一覧を表示できます
az account list --output table
# 以下のコマンドで利用するサブスクリプションを設定します
az account set --subscription "FOO_SUBSCRIPTION"
これでようやく funcコマンド
を正常動作させることができるようになります。
func azure functionapp
このコマンドを利用するには Azure Functions プロジェクトのルートディレクトリに移動する必要があるので注意が必要です。
プロジェクトのルートディレクトリへ移動したのちに以下のコマンドを実行することで, local.settings.json がリモートの Azure Functions 上の設定に書き換わります。
func azure functionapp fetch-app-settings "AZURE_FUNCTION_NAME"
おわりに
Azure は日々サービスが更新されており, なおかつ周辺ツールも日々追加・更新・削除されています。
そのためこの情報もすぐに現実にそぐわないもとのなってしまうと思いますが, それまでの間に誰かの助力となればと思います。