はじめに
大した内容ではありませんがAzure Durable FunctionsをCore Toolsでローカル実行するための環境の導入手順を備忘録として纏めます。
やりたいこと
PowerShell, Bash等のターミナルからCore ToolでDurableFunctionsOrchestration関数をローカル実行できるようにしたい
導入環境
- Windows 10 バージョン 20H2 (OS ビルド 19042.423)
- Azure Functions Core Tools 3.0.2534
- PowerShell 7.0.1
手順
Azure Functionsが接続するStorage AccountとしてAzure ストレージ エミュレーターをインストールする。
PowerShell(からでなくてもいいが)でユーザー環境変数にAzure ストレージ エミュレーターのパスを追加する。
$CurrentSystemPath = [System.Environment]::GetEnvironmentVariable("Path", "User")
$CurrentSystemPath += "C:\Program Files (x86)\Microsoft SDKs\Azure\Storage Emulator"
[System.Environment]::SetEnvironmentVariable("Path", $CurrentSystemPath, "User")
Microsoft DocsではMicrosoft SQL Server 2012 Express LocalDBを使用することが記載されているがここはあえてSQL Server 2019 Developerをインストールする。
Azure ストレージ エミュレーターからSQL Server Express 2019のSQL データベース インスタンスを参照するように次のコマンドを実行する。
AzureStorageEmulator.exe init -server localhost
# 出力例
Windows Azure Storage Emulator 5.10.0.0 command line tool
Found SQL Instance localhost\SQLExpress.
Creating database AzureStorageEmulatorDb510 on SQL instance 'localhost\SQLExpress'.
Granting database access to user DESKTOP-UGLTD41\saiky.
Database access for user DESKTOP-UGLTD41\saiky was granted.
Initialization successful. The storage emulator is now ready for use.
The storage emulator was successfully initialized and is ready to use.
動作確認
Azure Functionsのローカル関数プロジェクトを作成する。
func init ProjectTestDurableFunctions
# 出力例
Use the up/down arrow keys to select a worker runtime:dotnet
ローカル関数プロジェクト内にDurableFunctionsOrchestration関数を作成する。
cd ./ProjectTestDurableFunctions/
func new --template "DurableFunctionsOrchestration" --name TestDurableFunctions
# 出力例
Use the up/down arrow keys to select a template:Function name: TestDurableFunctions
The function "TestDurableFunctions" was created successfully from the "DurableFunctionsOrchestration" template.
Azure ストレージ エミュレーターを起動する。
AzureStorageEmulator start
# 出力例
Windows Azure Storage Emulator 5.10.0.0 command line tool
The storage emulator was successfully started.
関数をローカルで実行する。
func start
# 下記の出力例が出力されていたら成功
Http Functions:
TestDurableFunctions_HttpStart: [GET,POST] http://localhost:7071/api/TestDurableFunctions_HttpStart