はじめに
先日、SORACOM Beam をトリガーにして Microsoft Flow を動かしてみた記事を書いたのですが、今回は Azure Logic Apps を使ってみようと思います。
Azure Logic Apps って何?
Microsoft が提供する、アプリや Web サービスを結合した連携システムを作ることができる PaaS (Platform as a Service) です。
同社が提供する、 Microsoft Flow とほぼ同じサービスですが、できることが若干違います。
詳細は公式ドキュメントサイトをご覧ください。
Flow、Logic Apps、Functions、WebJobs の比較
https://docs.microsoft.com/ja-jp/azure/azure-functions/functions-compare-logic-apps-ms-flow-webjobs
ここで興味深いのは
Flow は Logic Apps の上に構築されています。 どちらも同じワークフロー デザイナーおよび同じコネクタを共有します。
とあり、Microsoft Flow の実体は Azure Logic Apps であることが記載されています。
手順
Azure Portal から「ロジック アプリ」を選択します。
「ロジック アプリ」画面上の「+追加」を選択します。
「ロジック アプリの作成」で「名前」「サブスクリプション」「リソース グループ」「場所」を適宜選択して「作成」を選択します。
ロジック アプリの作成が完了すると、Logic Apps デザイナーが表示されます。
今回は前回の Microsoft Flow と同様に、 SORACOM Beam から ツイートをするアプリを作ってみます。
「一般的なトリガーで開始する」の中から「HTTP 要求の受信時」を選択します。
おや、どこかで見たことがある画面が。
Microsoft Flow とこの辺りまったく同じですね。
同じなので、前回の手順と同じようにフローを記述することが可能です。
フローを保存すると「HTTP POST の URL」が前回同様に取得できるので、この URL を元に SORACOM Beam の設定を行いましょう。
なお、Microsoft Flow と異なる点として、デザイナーのメニューに「コード ビュー」のボタンがあります。
このボタンを押すと、今話題?の JSON 形式のデータとしてフロー情報を取得することができます。
{
"$connections": {
"value": {
"twitter": {
"connectionId": "/subscriptions/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/resourceGroups/SORACOM/providers/Microsoft.Web/connections/twitter",
"connectionName": "twitter",
"id": "/subscriptions/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/providers/Microsoft.Web/locations/japaneast/managedApis/twitter"
}
}
},
"definition": {
"$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
"actions": {
"ツイートの投稿": {
"inputs": {
"host": {
"connection": {
"name": "@parameters('$connections')['twitter']['connectionId']"
}
},
"method": "post",
"path": "/posttweet",
"queries": {
"tweetText": "電話番号は @{triggerBody()?['value1']} 、温度は @{triggerBody()?['value2']} 度、湿度は @{triggerBody()?['value3']} %です。"
}
},
"runAfter": {},
"type": "ApiConnection"
}
},
"contentVersion": "1.0.0.0",
"outputs": {},
"parameters": {
"$connections": {
"defaultValue": {},
"type": "Object"
}
},
"triggers": {
"manual": {
"inputs": {
"schema": {
"properties": {
"value1": {
"type": "string"
},
"value2": {
"type": "string"
},
"value3": {
"type": "string"
}
},
"type": "object"
}
},
"kind": "Http",
"type": "Request"
}
}
}
}
おわりに
ちょうど今、田畑の環境データの収集システムを開発していて、せっかくなら Microsoft Flow でデータ連携しちゃえばいいか?と思っていたのですが、Microsoft Flow って実行数がプランによって上限値が設けられているので、1分間隔でデータを送ろうとするとすぐ上限になってしまうため、ちょっと利用は難しいかな?と思っていました。
https://japan.flow.microsoft.com/ja-jp/pricing/
Azure Logic Apps を使う場合だと、月当たりの実行数上限がなく、従量課金での請求となるため、費用さえどうにかなれば Microsoft Flow よりも柔軟に使えるかと思います。
※まーそもそも台数多くなったら IoT Hub 使う方がデバイス管理など含め楽なんですけども・・・