Soracom

Users

スタートガイド

Azure と組み合わせる

SORACOM LTE-M Button と Azure を連携させる方法は 2 種類あります。

ボタンと Azure Functions 連携をすばやく構築したい ― SORACOM Funk + Azure Functions パターン 

ボタンと Azure Functions 連携をすばやく構築したい場合は、SORACOM Funk から Azure Functions を呼び出すパターンを利用します。

button_design_patterns / Button - Funk - Azure Functions

手順 

ここでは Azure Functions で Webhook (HTTP トリガー) を作成し、 SORACOM Funk から呼び出せるように構成する手順を解説します。

ステップ 1: 関数アプリを作成する 

Azure ポータルの “リソースの作成” から “Function App” を探してクリック、その後に表示される画面で [作成] をクリックします。 ※ TIPS: 検索窓で function と入力すると素早く探すことができます。

Button - Funk - Azure Functions / functions 1

フォームで以下の通り入力した後、[確認および作成] をクリックし、その先の確認画面で [作成] をクリックします。

  • サブスクリプション: <利用可能なサブスクリプションを選択してください>
  • リソースグループ: 新規作成 をクリック > button-app1 (任意の文字列)
  • 関数アプリ名: button-app1-Wee3Eeja (ランダムな文字列を付与することを推奨します)
  • 公開: コード
  • ランタイムスタック: Node.js
  • バージョン: 12
  • 地域: Japan East

※ TIPS: ランダムな文字列は pwgen in JavaScript といったツールを活用すると便利です。

Button - Funk - Azure Functions / functions 2

デプロイが終了したら [リソースに移動] をクリックします。

関数の管理画面から “関数” の右にある [+] をクリックした後、 “ポータル内” を選択し、[続行] をクリックします。

Button - Funk - Azure Functions / functions 3

次の画面では “webhook + API” を選択し、[作成] をクリックします。

Button - Funk - Azure Functions / functions 4

関数の管理画面に表示される “index.js” を以下のように書き換えてから [保存] をクリックします。その後 [関数の URL の取得] をクリックすると表示される URL をメモしておいてください。

module.exports = async function (context, req) {
  context.log(req.headers);
  context.log(req.body);
  context.res = { status: 204 };
};

Button - Funk - Azure Functions / functions 5

ステップ 2: SORACOM Funk の設定を行う 

SORACOM ユーザーコンソール の SIM グループの管理画面から “SORACOM Air for Cellular 設定” で [バイナリパーサー設定] を “ON” にした後、以下のように入力してから [保存] をクリックします。 ※ SIM グループを作成していない場合は作成した上で、ボタンの SIM に割り当てておいてください。

  • フォーマット: @button

Button - Funk - AWS Lambda / air 1

同じ SIM グループの管理画面から “SORACOM Funk 設定” を “ON” にした後に表示されるダイアログで以下のように入力します。

  • サービス: Azure Functions
  • 送信データ形式: JSON

ここまで入力してから “認証情報” で [認証情報を新規作成する…] をクリックします。

Button - Funk - Azure Functions / funk 1

表示されたダイアログで以下の通り入力した後、 [登録] をクリックします。

  • 認証情報 ID: azure_functions_button-app1_cred1
  • API トークン: <Azure Functions でメモした URL の ?code= 以降の文字列>

Button - Funk - Azure Functions / cred 1

登録が正常に完了すると SORACOM Funk の設定画面に戻ってきます。 この時 “認証情報” に、先ほど登録をした azure_functions_button-app1_cred1 が表示されていることが確認できたら、[関数の URL] に、先ほどメモをした URL の ?code= 以前の文字列を入力して [保存] をクリックします。

Button - Funk - Azure Functions / funk 2

以上で設定はすべて終了です。

ステップ 3: 動作確認 

確認は Azure Functions で行います。 関数の管理画面から [HttpTrigger1] をクリックし index.js を表示したら [ログ] をクリックすると、ログウィンドウが開き確認できるようになります。

Button - Funk - Azure Functions / testflight 1

ステップ 4: トラブルシュート 

  • LTE-M Button の LED が最終的に赤色点灯になる
    • A: LTE-M Button が SIM グループに所属していることを確認してください。
    • B: SIM グループ内の Azure Functions に対する URL 設定を確認してください。
    • C: Azure Functions 以降の設定を見直すようにしてください。
  • { "payload":"TQEDUQ==" } のように読めない文字列になっている
    • SORACOM Air for Cellular 設定のバイナリパーサーで @button を設定するようにしてください。
  • Azure Functions のログに表示されない
    • Azure Functions 管理画面を再読み込み (リロード) してみてください。

ステップ 5: この後の開発に向けた情報源 

Azure Functions のエンドポイントセキュリティ

Azure Functions のエンドポイント (URL) に付与されている ?code= の値は [Azure Functions ダッシュボード] > [関数] > {関数名} > [管理] > 関数キー で見つけることができます。

Button - Funk - Azure Functions / apikey

この API キーの利用方法は Azure Functions / API キーの承認 をご覧ください。

大量のボタンデバイスからのデータを確実に処理したい ― SORACOM Funnel + Azure Event Hubs パターン 

大量のボタンデバイスからのデータを確実に処理したい場合は、SORACOM Funnel から Azure Event Hubs を通じて Azure Functions を利用する方法があります。

button_design_patterns / Button - Funnel - Azure Event Hubs

Azure Functions の Webhook の呼び出し制約 が存在するため、大量のデータを常時受け付けるようなアプリケーションになる場合には本パターンを検討します。注意点は、Azure Event Hubs は仮想サーバの課金体系に近く 、データの発生頻度や量によっては費用が割高になる可能性もあるため、コスト面からの検討も必要となります。

手順 

ここでは Azure Event Hubs から Azure Functions への連携部分について追加で解説します。

ステップ 1: Azure Event Hubs を作成する 

Getting Started: Azure Event Hubs アダプターを使用する | SORACOM Funnel | SORACOM Users1. Azure 側の設定 を行ってください。

ステップ 2: Function App (関数) を作成する 

Azure ポータルの “リソースの作成” から “Function App” を探してクリック、その後に表示される画面で [作成] をクリックします。 ※ TIPS: 検索窓で function と入力すると素早く探すことができます。

Button - Funk - Azure Functions / functions 1

フォームで以下の通り入力した後、[確認および作成] をクリックし、その先の確認画面で [作成] をクリックします。

  • サブスクリプション: <利用可能なサブスクリプションを選択してください>
  • リソースグループ: SoracomFunnelDemo0 (Event Hubs と同じリソースグループを選びます)
  • 関数アプリ名: button-app2-tie4rohK (ランダムな文字列を付与することを推奨します)
  • 公開: コード
  • ランタイムスタック: Node.js
  • バージョン: 12
  • 地域: Japan East

※ TIPS: ランダムな文字列は pwgen in JavaScript といったツールを活用すると便利です。

Button - Funnel - Azure Event Hubs / functions 2

デプロイが終了したら [リソースに移動] をクリックします。

関数の管理画面から “関数” の右にある [+] をクリックした後、 “ポータル内” を選択し、[続行] をクリックします。

Button - Funk - Azure Functions / functions 3

次の画面では “その他のテンプレート…” を選択し、[テンプレートの完了と表示] をクリックします。

Button - Funnel - Azure Event Hubs / functions 4

イベントハブ接続の [新規] をクリックし、表示されるダイアログで 接続する Event Hub を選びます。その他の項目はデフォルトのままにしておいて [作成] をクリックします。

Button - Funnel - Azure Event Hubs / functions trigger

関数の管理画面に表示される “index.js” を以下のように書き換えてから [保存] をクリックします。

module.exports = async function (context, eventHubMessages) {
  eventHubMessages.forEach((message, index) => {
    context.log(message);
  });
};

Button - Funnel - Azure Event Hubs / functions 5

ステップ 3: SORACOM Funnel の設定を行う 

SORACOM ユーザーコンソール の SIM グループの管理画面から “SORACOM Air for Cellular 設定” で [バイナリパーサー設定] を “ON” にした後、以下のように入力してから [保存] をクリックします。 ※ SIM グループを作成していない場合は作成した上で、ボタンの SIM に割り当てておいてください。

  • フォーマット: @button

Button - Funk - AWS Lambda / air 1

これ以降は Azure Event Hubs アダプターを使用する | SORACOM Funnel2. SORACOM 側の設定 を行ってください。

ステップ 4: 確認 

確認は Azure Functions で行います。 関数の管理画面から [EventHubTrigger1] をクリックし index.js を表示したら [ログ] をクリックすると、ログウィンドウが開き確認できるようになります。

Button - Funnel - Azure Event Hubs / testflight 1

ステップ 5: トラブルシュート 

  • LTE-M Button の LED が最終的に赤色点灯になる
    • A: LTE-M Button が SIM グループに所属していることを確認してください。
    • B: SORACOM Air for Cellular 設定のバイナリパーサーを ON にした上で フォーマットに @button が設定されているか確認してください。
    • C: Azure Event Hubs 以降の設定を見直すようにしてください。
      • 特に Function App からトリガーとして “イベント ハブ接続” を選ぶ際の “ポリシー” には リッスン の権限があるポリシーを選ぶようにしてください。

ステップ 6: この後の開発に向けた情報源