このクイックスタートでは、Visual Studio Codeを使用して、他の関数の呼び出しを調整してチェーンする PowerShell Durable Functions アプリを作成してテストします。 その後、Azureに発行します。
Durable Functionsは、アプリケーションの状態、チェックポイント、再起動を管理し、サーバーレス環境でステートフル ワークフローを記述できるようにします。
前提条件
このクイック スタートを完了するには、次のものが必要です。
Visual Studio Codeがインストールされています。
Visual Studio Code拡張機能 Azure Functionsがインストールされています。
最新バージョンの Azure Functions Core Tools がインストールされています。
データをセキュリティで保護する HTTP テスト ツール 。 詳細については、「HTTP テスト ツール」を参照してください。
Azure のサブスクリプション。 Durable Functionsを使用するには、Azure Storage アカウントが必要です。
Azure アカウントをお持ちでない場合は、開始する前に 無料アカウント を作成してください。
ローカル プロジェクトを作成する
このセクションでは、Visual Studio Codeを使用してローカル Azure Functions プロジェクトを作成します。
Visual Studio Codeで F1 キーを押します (または Ctrl/Cmd + Shift + P キーを押して) コマンド パレットを開きます。 プロンプト (
>) で、「Azure Functions: 新しいプロジェクトの作成を入力して選択します。
を選択し、を参照します。 [フォルダーの選択] ダイアログで、プロジェクトに使用するフォルダーに移動し、[選択] を選択します。
プロンプトで、次の情報を指定します。
プロンプト アクション 説明 関数アプリ プロジェクトの言語を選択してください PowerShellを選択します。 ローカルの PowerShell 関数プロジェクトを作成します。 バージョンを選択してください Azure Functions v4 を選択します。 このオプションは、Core Tools がまだインストールされていない場合にのみ表示されます。 その場合、アプリの初回実行時に Core Tools がインストールされます。 プロジェクトの最初の関数のテンプレートを選択します [今はスキップ] を選択します。 プロジェクトを開く方法を選択してください [Open in current window] (現在のウィンドウで開く) を選択します。 選択したフォルダー内のVisual Studio Codeを開きます。
Visual Studio Code は、プロジェクトの作成に必要な場合に Azure Functions Core Tools をインストールします。 また、関数アプリ プロジェクトがフォルダーに作成されます。 このプロジェクトには、host.json および local.settings.json 構成ファイルが含まれています。
また、ルート フォルダーには、package.json ファイルも作成されます。
スタンドアロン Durable Functions SDK を構成する
スタンドアロン SDK は、PowerShell Durable Functionsに最適なパフォーマンスと最新の機能を提供します。 次の 3 つの手順で構成します。
手順 1:local.settings.jsonを開き、次の設定が存在することを確認します。 必要に応じて、それらを追加または更新します。
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "",
"FUNCTIONS_WORKER_RUNTIME": "powershell",
"FUNCTIONS_WORKER_RUNTIME_VERSION" : "7.4",
"ExternalDurablePowerShellSDK": "true"
}
}
手順 2:requirements.psd1を開き、SDK の依存関係を追加します。
@{
'AzureFunctions.PowerShell.Durable.SDK' = '2.*'
}
2.*指定子を使用すると、PowerShell ギャラリー から最新の安定した 2.x バージョンを取得できます。
手順 3:profile.ps1 ファイルの末尾に次の行を追加します。
Import-Module AzureFunctions.PowerShell.Durable.SDK -ErrorAction Stop
関数を作成する
基本的なDurable Functions アプリには、次の 3 つの機能があります。
| 関数の型 | Purpose |
|---|---|
| オーケストレーター | 他の関数を調整するワークフロー。 |
| アクティビティ | 作業を実行し、値を返すためにオーケストレーターによって呼び出されます。 |
| クライアント (HTTP スターター) | オーケストレーターを開始する HTTP によってトリガーされる関数。 |
各関数について、コマンド パレットを開き、Azure Functions: 関数の作成 を選択し、プロンプトの値を指定します。
1. オーケストレーター関数
| プロンプト | Value |
|---|---|
| テンプレートを選択する | Durable Functions オーケストレーター |
| 関数名 | HelloOrchestrator |
HelloOrchestrator/run.ps1 を開き、オーケストレーターを表示します。
Invoke-ActivityFunctionを呼び出すたびに、Hello アクティビティ関数が呼び出されます。
2. アクティビティ関数
| プロンプト | Value |
|---|---|
| テンプレートを選択する | Durable Functions アクティビティ |
| 関数名 | こんにちは |
Hello/run.ps1 を開いて、名前を入力として受け取り、あいさつを返すことがわかります。 アクティビティ関数は、データベース呼び出しや計算などのアクションを実行する場所です。
3. クライアント関数 (HTTP スターター)
| プロンプト | Value |
|---|---|
| テンプレートを選択する | Durable Functions HTTP スターター |
| 関数名 | HttpStart |
| 承認レベル | 匿名 (デモ目的) |
HttpStart/run.ps1を開き、それがStart-NewOrchestrationを使用して新しいオーケストレーションを開始し、監視 URL を含む HTTP 応答を返すかどうかを確認します。
これで、ローカルで実行してAzureにデプロイできるDurable Functions アプリが作成されました。
ヒント
このクイックスタートでは、スタンドアロンのDurable Functions PowerShell SDKを使用します。 SDK と従来の組み込みバージョンからの移行の詳細については、 スタンドアロンの PowerShell SDK ガイドを参照してください。
関数をローカルでテストする
Azure Functions Core Tools を使用すると、ローカル開発コンピューターでAzure Functions プロジェクトを実行できます。 Visual Studioで初めて関数を起動するときに、これらのツールをインストールするように求められます。
関数をテストするには、
Helloアクティビティ関数のコード (Hello/run.ps1 内) にブレークポイントを設定します。 F5 キーを押すか、コマンド パレットで [デバッグ: デバッグの開始] を選択して、関数アプリ プロジェクトを開始します。 Core Tools の出力がターミナル パネルに表示されます。注
デバッグの詳細については、「Durable Functions diagnostics」を参照してください。
Durable Functionsを実行するにはストレージ アカウントが必要です。 ローカル開発には、Azurite ストレージ エミュレーターを使用するか、メッセージが表示されたらAzureストレージ アカウントを作成できます。 Visual Studio Codeがストレージアカウントの選択を求めた場合は、ストレージ アカウントの選択を選択します。
プロンプトで、次の情報を入力して、Azureで新しいストレージ アカウントを作成します。
プロンプト アクション 説明 サブスクリプションを選択してください サブスクリプションの名前を選択します。 Azure サブスクリプション。 ストレージ アカウントを選んでください [新しいストレージ アカウントの作成] を選択します。 新しいストレージ アカウントの名前を入力してください 一意の名前を入力します。 作成するストレージ アカウントの名前。 リソース グループを選択してください 一意の名前を入力します。 作成するリソース グループの名前。 場所を選択してください Azure のリージョンを選択します。 自分の地域に近いリージョンを選択します。 ターミナル パネルで、HTTP によってトリガーされる関数の URL エンドポイントをコピーします。
ブラウザーまたは HTTP テスト ツールを使用して URL エンドポイントに HTTP POST 要求を送信します。
最後のセグメントをオーケストレーター関数の名前 (
HelloOrchestrator) に置き換えます。 この URL はhttp://localhost:7071/api/orchestrators/HelloOrchestratorのようになります。応答は、HTTP 関数の最初の結果です。 これによって、持続的オーケストレーションが正常に開始されたことがわかります。 オーケストレーションの最終的な結果はまだ表示されません。 応答には、いくつかの便利な URL が含まれています。 ここでは、オーケストレーションの状態のクエリを実行します。
statusQueryGetUriの URL 値をコピーし、ブラウザーのアドレス バーに貼り付け、要求を実行します。 HTTP テスト ツールを引き続き使用して GET 要求を発行することもできます。この要求によって、オーケストレーション インスタンスの状態が照会されます。 インスタンスが完了したことを示す応答と、Durable 関数の出力が表示されます。
{ "name": "HelloOrchestrator", "instanceId": "9a528a9e926f4b46b7d3deaa134b7e8a", "runtimeStatus": "Completed", "input": null, "customStatus": null, "output": [ "Hello Tokyo!", "Hello Seattle!", "Hello London!" ], "createdTime": "2020-03-18T21:54:49Z", "lastUpdatedTime": "2020-03-18T21:54:54Z" }デバッグを停止するには、Visual Studio Codeで Shift + F5 キーを押します。
関数がローカル コンピューターで正しく実行されていることを確認したら、プロジェクトをAzureに発行します。
Azure にサインインする
Azure リソースを作成したり、アプリを発行したりする前に、Azure にサインインする必要があります。
まだサインインしていない場合は、アクティビティ バーの Azure アイコンを選択します。 その後、[リソース] で [Azure にサインイン] を選択します。
既にサインインしていて、既存のサブスクリプションを確認できる場合は、次のセクションに進みます。 Azure アカウントをお持ちでない場合は、[Azure アカウントの作成] を選択します。 学生は、[Microsoft Azure for Students アカウントの作成] を選択できます。
ブラウザーでプロンプトが表示されたら、ご利用の Azure アカウントを選択し、その Azure アカウントの資格情報を使用してサインインします。 新しいアカウントを作成した場合は、アカウントの作成後にサインインできます。
正常にサインインしたら、新しいブラウザー ウィンドウを閉じてかまいません。 ご利用の Azure アカウントに属しているサブスクリプションがサイド バーに表示されます。
Azureで関数アプリを作成する
このセクションでは、Flex Consumption プランで、Azure サブスクリプションの関連リソースと共に関数アプリを作成します。 リソース作成に関する決定の多くは、既定の動作に基づいて自動的に行われます。 作成されたリソースをより細かく制御するには、代わりに高度なオプションを使って関数アプリを作成する必要があります。
Visual Studio Code で、F1 キーを選択してコマンド パレットを開きます。 プロンプト (
>) で、入力して [Azure Functions: Azure で関数アプリを作成する] を選択します。プロンプトで、次の情報を指定します。
プロンプト アクション サブスクリプションを選択してください 使用するAzure サブスクリプションを選択します。 [リソース] に表示されるサブスクリプションが 1 つだけのときは、このプロンプトは表示されません。 新しい関数アプリ名を入力する URL パスで有効なグローバルに一意の名前を入力します。 入力した名前は、Azure Functions 内での一意性を確保するために検証されます。 Select a location for new resources (新しいリソースの場所を選択してください) Azure のリージョンを選択します。 パフォーマンスを向上させるために、お近くのリージョンを選択してください。 Flex 従量課金プランでサポートされているリージョンのみが表示されます。 ランタイム スタックを選択してください 現在ローカルで実行している言語バージョンを選択してください。 リソース認証の種類を選択する 既定のホスト ストレージ アカウントに接続するための最も安全なオプションであるマネージド ID を選択します。 Azure に作成されている個々のリソースの状態が、Azure の拡張機能によって [Azure: アクティビティ ログ] パネルに表示されます。
関数アプリが作成されると、Azure サブスクリプションに次の関連リソースが作成されます。 リソースの名前は、関数アプリに入力した名前に基づいて決まります。
- リソース グループ。関連リソースの論理コンテナーです。
- 関数アプリ。関数コードを実行するための環境となります。 関数アプリを使用すると、同じホスティング プランに含まれるリソースの管理、デプロイ、共有を容易にするための論理ユニットとして関数をグループ化できます。
- Azure App Service プラン。関数アプリの基になるホストを定義します。
- 標準Azure Storage アカウント。関数アプリに関する状態やその他の情報を維持するために Functions ホストによって使用されます。
- 関数アプリに接続された Application Insights インスタンス。アプリ内の関数の使用を追跡します。
- 新しい既定のホスト ストレージ アカウントの ストレージ BLOB データ共同作成者 ロールに追加されるユーザー割り当てマネージド ID。
関数アプリが作成され、展開パッケージが適用されると、通知が表示されます。
ヒント
既定では、関数アプリに必要な Azure リソースが、入力した関数アプリの名前に基づいて作成されます。 既定では、関数アプリによって、同じ新しいリソース グループにリソースが作成されます。 関連付けられているリソースの名前をカスタマイズする、または既存のリソースを再利用する必要がある場合は、高度な作成オプションを使用してプロジェクトを発行します。
Azure にプロジェクトをデプロイする
Important
既存の関数アプリにデプロイすると、Azure にあるそのアプリの内容が常に上書きされます。
コマンド パレットで、入力して [Azure Functions: 関数アプリにデプロイする] を選択します。
作成したばかりの関数アプリを選びます。 前のデプロイの上書きを求められたら、[デプロイ] を選択して、関数コードを新しい関数アプリ リソースにデプロイします。
デプロイの完了後、[出力の表示] を選択すると、作成済みの Azure リソースなど、作成とデプロイの結果が表示されます。 通知を見逃した場合は、右下隅にあるベル アイコンを選択して、再度確認します。
Azureで関数をテストする
Azure ポータル (または Azure CLI を使用) で、アプリ設定
ExternalDurablePowerShellSDKがtrueに設定されていることを確認します。 見つからない場合は、 Settings>Environment 変数 の下に追加し、関数アプリを再起動します。出力パネルから HTTP トリガーの URL をコピーします。 URL は次の形式にする必要があります。
https://<functionappname>.azurewebsites.net/api/orchestrators/HelloOrchestratorURL に HTTP POST 要求を送信します。 ローカルでテストしたときと同じ状態の応答が返されます。
オーケストレーションが開始されない場合は、Azure ポータルの Monitor>Log stream で、SDK のインポートまたはストレージ接続に関連するエラーを確認します。
リソースをクリーンアップする
クイック スタートを完了するために作成したリソースが不要になった場合は、Azure サブスクリプションの関連コストを回避するために、リソース グループおよびすべての関連リソースを削除します。