今回の目的
DurableFunctionsの利用方法を理解する。
- DurableFunctionsの概要 に記載されている"パターン #1: 関数チェーン"の動くサンプルを作ってみる。
検証の前提
隙間時間を利用して技術検証等を行うためマシンに依存せずに作業ができるようにブラウザオンリーで実施可能な内容としている。
(ブラウザオンリーでの開発に固執中 - 8月下旬に入手予定のSurface Goで空いた時間を有効利用できたら…と夢想中)
題材
AWS Lambdaの設定画面上だけで実装を続け、長大になってしまったLine Botの処理(Node.js)を分割しDurableFunctionsを利用して順次処理させるようにする。
AWS LambdaからAzure Functionsへの移行は完了済み。
- DurableFunctionsを利用すると、処理を非同期で依頼した後に、処理のステータスを問い合わせることもできるが、今回は行なわない。
個人的な結論(感想)
理解を深めていけば、使いどころが色々とありそう。
DurableFunctionsの概要 に記載されている各パターンについて理解し、使いどころを見出していきたい。
注意点
現時点(2018/08/05)では下記制限がある。
- ブラウザ上からの開発では言語はC#しか選択できない。
- Function App作成時にランタイム バージョンでbetaを選択する必要がある。
試した手順
下記手順でLine Botから呼び出せるモノを作成。
- Function App作成
- ランタイム バージョンで"beta"を選択。
- その他はデフォルト値を選択。
- 関数を作成
-
「Durable Functions HTTP starter」「Durable Functions orchestrator」「Durable Functions activity」をそれぞれ生成する。
-
生成した「Durable Functions HTTP starter」の編集画面にて"関数のURLの取得"を選択し処理を呼び出すためのURLを確認する。
-
Curl等で上記URLを呼び出すことで「Durable Functions activity」が呼び出せることを確認。
functionName部分には「Durable Functions orchestrator」の名称(例:HelloSequence)を指定。
1. Line Botから作成した関数を呼び出す。 - パラメータはPostパラメータとして渡すことが可能。 - 「Durable Functions HTTP starter」Runメソッドのパラメータ"HttpRequestMessage req"から取得可能。
上記までできれば、後は元の処理をC#化しながら複数の「Durable Functions activity」として分割していく。
参考とさせていただいた記事:LineSimulatorを利用してDurable FunctionsでロングランなLineBotをローカル環境交えて作ってみる
この記事を参考とすれば、処理を非同期で依頼した後に、処理のステータスを問い合わせることが可能。