LoginSignup
6
3

More than 5 years have passed since last update.

SORACOM Beam をトリガーとして Azure Logic Apps を動かす方法

Last updated at Posted at 2018-06-18

はじめに

先日、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 から「ロジック アプリ」を選択します。

左側ツリー
LogicApps001.png

一覧メニュー
LogicApps002.png

「ロジック アプリ」画面上の「+追加」を選択します。

LogicApps003.png

「ロジック アプリの作成」で「名前」「サブスクリプション」「リソース グループ」「場所」を適宜選択して「作成」を選択します。

LogicApps004.png

ロジック アプリの作成が完了すると、Logic Apps デザイナーが表示されます。

LogicApps005.png

今回は前回の Microsoft Flow と同様に、 SORACOM Beam から ツイートをするアプリを作ってみます。
「一般的なトリガーで開始する」の中から「HTTP 要求の受信時」を選択します。

LogicApps006.png

おや、どこかで見たことがある画面が。
Microsoft Flow とこの辺りまったく同じですね。

LogicApps007.png

同じなので、前回の手順と同じようにフローを記述することが可能です。

LogicApps008.png

フローを保存すると「HTTP POST の URL」が前回同様に取得できるので、この URL を元に SORACOM Beam の設定を行いましょう。

beamtoazure.png

なお、Microsoft Flow と異なる点として、デザイナーのメニューに「コード ビュー」のボタンがあります。
このボタンを押すと、今話題?の JSON 形式のデータとしてフロー情報を取得することができます。

LogicApps010.png

BeamToTwitter
{
    "$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 使う方がデバイス管理など含め楽なんですけども・・・

6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3