Soracom

Users

スタートガイド
Home スタートガイド IoT デザインパターン SORACOM LTE-M Button と各種クラウドサービスを連携する 実装ガイド

AWS と組み合わせる

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

ボタンアプリケーション構築を AWS で完結したい ― SORACOM LTE-M Button powered by AWS を利用する構成

ボタンアプリケーション構築を AWS で完結したい場合は、SORACOM LTE-M Button powered by AWS を利用することで AWS IoT 1-Click を通じて AWS Lambda と連携できます。

button_design_patterns / Button - AWS IoT 1-Click, AWS Lambda

具体的な方法は Getting Started: クリックして Slack に通知する | SORACOM LTE-M Button powered by AWS ユーザーガイド をご覧ください。

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

SORACOM LTE-M Button for Enterprise もしくは Plus からAWS Lambda 連携を迅速に構築したい場合は、SORACOM Funk から AWS Lambda を呼び出すパターンを利用します。

button_design_patterns / Button - Funk - AWS Lambda

ここでは AWS Lambda で Lambda 関数を作成し、SORACOM Funk (以下、Funk) から呼び出せるようにする手順を解説します。

ステップ 1: AWS Lambda 関数を作成する

AWS マネージメントコンソールの "Lambda" より [関数の作成] をクリックします。その後、"一から作成" を選んだあと、以下のように入力して [関数の作成] をクリックします。

  • 関数名: my_button_func1 (任意の文字列)
  • ランタイム: Node.js 12.x

Button - Funk - AWS Lambda / lambda 1

作成された関数の管理画面の [関数コード] を以下のように書き換えてから [保存] をクリックします。

exports.handler = async (event, context) => {
  console.log(event);
  console.log(context.clientContext.custom);
  return { statusCode: 204 };
};

Button - Funk - AWS Lambda / lambda 2

また、この関数の ARN をメモしておきます。

Button - Funk - AWS Lambda / lambda 3

ステップ 2: AWS Lambda 接続用の AWS IAM ユーザーを作成する

AWS マネージメントコンソールの "IAM" より [ユーザー] > [ユーザーを追加] と進むと表示されるダイアログで以下のように入力してから [次のステップ: アクセス権限] をクリックします。

  • ユーザー名: soracom_funk_pseudo_user1 (任意の文字列)
  • アクセスの種類: <プログラムによるアクセス: チェックつける>

Button - Funk - AWS Lambda / iam 1

アクセス許可の設定では [既存のポリシーを直接アタッチ] をクリックした後、"AWSLambraRole" ポリシーを一覧から探してチェックを付けた後、[次のステップ: タグ] をクリックします。

[フィルタ]lambdarole と入れると探しやすくなります。

Button - Funk - AWS Lambda / iam 2

タグの追加は特に設定することがありません。そのまま [次のステップ: 確認] をクリックしてください。

最後の確認画面で、今までの設定が反映されているかを確認したら [ユーザーの作成] をクリックします。

ユーザーの作成が完了すると アクセスキー IDシークレットアクセスキー が表示されます。この 2 つをメモしておいてください。(特にシークレットアクセスキーは後ほど入手することができませんので、無くさないようにしてください。)

Button - Funk - AWS Lambda / iam 3

ステップ 3: SORACOM グループを設定する

バイナリパーサー、Funk の設定はグループに対して行います

ここでは、グループの設定を変更する操作のみを説明します。グループの仕組みやグループを作成する操作について詳しくは、グループ設定 を参照してください。

  1. SIM グループのバイナリパーサーを設定します。

    バイナリパーサーの設定について詳しくは、バイナリパーサーを設定する を参照してください。

    なお、[フォーマット] には、@button を入力します。

    Button - Funk - AWS Lambda / air 1

    続けて、同じ SIM グループの SORACOM Funk を設定します。

  2. 同じ SIM グループ画面で [SORACOM Funk 設定] をクリックします。

    SIM グループ画面を表示する操作について詳しくは、グループの設定を変更する を参照してください。

  3. 以下のように設定します。

    • サービス: AWS Lambda
    • 送信データ形式: JSON
  4. "認証情報" で [認証情報を新規作成する...] をクリックします。

    Button - Funk - AWS Lambda / funk 1

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

    • 認証情報 ID: soracom_funk_pseudo_user1_cred1
    • AWS Access Key ID: <AWS IAM でメモしたアクセス ID>
    • AWS Secret Access Key: <AWS IAM でメモしたシークレットアクセスキー>

    Button - Funk - AWS Lambda / cred 1

    登録が正常に完了すると SORACOM Funk の設定画面に戻ってきます。

  6. "認証情報" に、先ほど登録をした soracom_funk_pseudo_user1_cred1 が表示されていることを確認して、[関数の ARN] に、先ほどメモをした ARN を入力して [保存] をクリックします。

    Button - Funk - AWS Lambda / funk 2

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

ステップ 4: 動作を確認する

確認は Amazon CloudWatch で行います。ボタンを押してから LED が「緑色」になったことを確認した後、CloudWatch の管理画面から Lambda 関数 (my_button_func1) を作成したリージョンを選んだ後、[ログ] をクリックすると "ロググループ" に /aws/lambda/my_button_func1 が作成されています。クリックしていくとログを確認できます。

Button - Funk - AWS Lambda / testflight 1

トラブルシュート

  • LTE-M Button の LED が最終的に赤色点灯になる
    • A: LTE-M Button が SIM グループに所属していることを確認してください。
    • B: SORACOM Air for Cellular 設定のバイナリパーサーを ON にした上で フォーマットに @button が設定されているか確認してください。
  • Amazon CloudWatch で /aws/lambda/my_button_func1 が見つからない
    • リージョンを確認するようにしてください。

この後の開発に向けた情報源

今回はボタンのデータをログとして出力しました。実際の活用は AWS Lambda から他のサービス連携を行いデータ活用を行っていくことになります。それらの方法については AWS Lambda の開発ドキュメントや活用方法を参照してください。

ボタンのデータ利用をサーバレスで実現したい ― SORACOM Funnel + AWS IoT Core パターン

SORACOM LTE-M Button for Enterprise もしくは Plus のデータ利用をサーバレスで実現したい場合は、SORACOM Funnel を利用して AWS IoT Core を経由して AWS の各種サービスと連携するパターンを利用します。

button_design_patterns / Button - Funnel - AWS IoT Core + Amazon SNS(Email)

ここでは SORACOM Funnel から AWS IoT Core を経由し、Amazon SNS を利用して Email を送ります。

ステップ 1: Amazon SNS の「トピック」を作成する

AWS マネージメントコンソールの "Simple Notification Service" より [トピック] > [トピックの作成] をクリックします。

Button - Funnel - AWS IoT Core / sns 1

以下のように入力して [トピックの作成] をクリックします。

  • 名前: soracom-funnel-app1 (任意の文字列)
  • 表示名: soracom-funnel-app1

Button - Funnel - AWS IoT Core / sns 2

[サブスクリプションの作成] をクリックします。

Button - Funnel - AWS IoT Core / sns 3

以下のように入力して [トピックの作成] をクリックします。

  • プロトコル: E メール
  • エンドポイント (*1): (ボタン押下時の送信先メールアドレス)
  • (*1) プロトコルを選択すると入力できるようになります。

Button - Funnel - AWS IoT Core / sns 4

エンドポイントに入力したメールアドレスに "AWS Notification - Subscription Confirmation" という件名のメールが送信されています。そのメールの中の [Confirm subscription] をクリックします。"Subscription confirmed!" と表示されたことを確認してください。(表示されたウィンドウは閉じてしまって構いません。また、メールは削除してしまって構いません。)

Button - Funnel - AWS IoT Core / sns 5

Amazon SNS の管理画面で再読み込みをした際にステータスが「確認済み」となっていることを確認してください。

Button - Funnel - AWS IoT Core / sns 6

ステップ 2: AWS IoT Core から SNS トピックを呼び出せるようにする

AWS IoT Core の管理画面から [ACT] > [ルールの作成] とクリックします。

Button - Funnel - AWS IoT Core / iot core 1

表示されるダイアログで以下のように入力します。

  • 名前: invoke_to_sns1 (任意の文字列)
  • SQL バージョンの使用: 2016-03-23
  • ルールクエリステートメント: SELECT * FROM 'button_topic/#'

Button - Funnel - AWS IoT Core / iot core 2

ここまで入力してから "1 つ以上のアクションを設定する" の [アクションの追加] をクリックし、"アクションの選択" から [SNS プッシュ通知としてメッセージを送信する] にチェックをしてから [アクションの設定] をクリックします。

Button - Funnel - AWS IoT Core / iot core 3

表示されるダイアログで以下のように入力したら [ロールの作成] をクリックします。

  • SNS ターゲット: soracom-funnel-app1 (*1)
  • メッセージ形式: RAW
  • (*1) [選択] をクリックすると一覧表示されます。

Button - Funnel - AWS IoT Core / iot core 4

表示されるダイアログで以下のように入力したら [ロールの作成] をクリックします。

  • 名前: iotcore_rule_invoke_to_sns1

Button - Funnel - AWS IoT Core / iot core 5

"アクションの設定" に戻ってきたら [アクションの追加] をクリックします。 "ルールの作成" に戻ってきたら [ルールの作成] をクリックします。

AWS IoT Core の管理画面から [設定] で "カスタムエンドポイント" を確認します。表示されているエンドポイントをメモしておいてください。 このとき [ステータスの確認] ボタンが表示されている場合は、このボタンをクリックしてください。エンドポイントが有効になります。

Button - Funnel - AWS IoT Core / iot core 6

AWS IoT Core の管理画面から [テスト] の "発行" でテストをします。以下のように入力したら [トピックに発行] をクリックします。

  • (テキストボックス) : button_topic/test1
  • (テキストエリア) : (特に変更の必要はありません)

Button - Funnel - AWS IoT Core / iot core 7

ここまでの設定がすべて完了できていれば、Amazon SNS の "エンドポイント" に設定したメールアドレスに以下のようなメールが送信されています。メールを確認してください。(確認したらメールは削除してしまって構いません。)

Button - Funnel - AWS IoT Core / iot core 8

ステップ 3: AWS IoT Core 接続用の AWS IAM ユーザーを作成する

AWS IAM の管理画面から [ユーザー] > [ユーザーを追加] と進むと表示されるダイアログで以下のように入力してから [次のステップ: アクセス権限] をクリックします。

  • ユーザー名: soracom_funnel_to_awsiotcore1 (任意の文字列)
  • アクセスの種類: <プログラムによるアクセス: チェックつける>

Button - Funnel - AWS IoT Core / iam 1

アクセス許可の設定では [既存のポリシーを直接アタッチ] をクリックした後、"AWSIoTDataAccess" ポリシーを一覧から探してチェックを付けた後、[次のステップ: タグ] をクリックします。

フィルタに awsiotdata と入れると探しやすくなります。

Button - Funnel - AWS IoT Core / iam 2

タグの追加は特に設定することがありません。そのまま [次のステップ: 確認] をクリックしてください。

最後の確認画面で、今までの設定が反映されているかを確認したら [ユーザーの作成] をクリックします。

ユーザーの作成が完了すると アクセスキー IDシークレットアクセスキー が表示されます。この 2 つをメモしておいてください。特にシークレットアクセスキーは後ほど入手することができません

Button - Funnel - AWS IoT Core / iam 3

ステップ 4: SORACOM グループを設定する

バイナリパーサー、Funk の設定はグループに対して行います

ここでは、グループの設定を変更する操作のみを説明します。グループの仕組みやグループを作成する操作について詳しくは、グループ設定 を参照してください。

  1. SIM グループのバイナリパーサーを設定します。

    バイナリパーサーの設定について詳しくは、バイナリパーサーを設定する を参照してください。

    なお、[フォーマット] には、@button を入力します。

    Button - Funk - AWS Lambda / air 1

    続けて、同じ SIM グループの SORACOM Funk を設定します。

  2. 同じ SIM グループ画面で [SORACOM Funk 設定] をクリックします。

    SIM グループ画面を表示する操作について詳しくは、グループの設定を変更する を参照してください。

  3. 以下のように設定します。

    • 転送先サービス: AWS IoT
    • 転送先 URL: https://<AWS IoT Core の設定でメモしたカスタムエンドポイント>/button_topic/data
  4. "認証情報" の右側の [+] をクリックします。

    Button - Funnel - AWS IoT Core / funnel 1

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

    • 認証情報 ID: soracom_funnel_to_awsiotcore_cred1
    • AWS Access Key ID: <AWS IAM でメモしたアクセス ID>
    • AWS Secret Access Key: <AWS IAM でメモしたシークレットアクセスキー>

    Button - Funnel - AWS IoT Core / cred 1

    登録が正常に完了すると SORACOM Funnel の設定画面に戻ってきます。

  6. "認証情報" に、先ほど登録をした soracom_funnel_to_awsiotcore_cred1 が表示されていることが確認して、[保存] を行います。

ステップ 5: 動作を確認する

ボタンを押してから LED が「緑色」になったことを確認した後、Amazon SNS の "エンドポイント" に設定したメールアドレスに以下のようなメールが送信されています。

Button - Funnel - AWS IoT Core / testflight 1

トラブルシュート

  • LTE-M Button の LED が最終的に赤色点灯になる
    • A: LTE-M Button が SIM グループに所属していることを確認してください。
    • B: SORACOM Air for Cellular 設定のバイナリパーサーを ON にした上で フォーマットに @button が設定されているか確認してください。
    • C: AWS IoT Core 以降の設定を見直すようにしてください。
  • AWS IoT Core のルール作成時に Amazon SNS のトピックが見つからない
    • リージョンを確認するようにしてください。AWS IoT Core と Amazon SNS のリージョンは同一である必要があります。

この後の開発に向けた情報源

今回はボタンのデータをそのままメールで送付するようにしました。実際の活用は AWS IoT Core からルールによって別のサービスを呼び出してデータの加工や蓄積を行うことになります。その方法に関しては AWS IoT Core およびその先のサービスとの連携方法を参照するようにしてください。