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 と連携できます。
具体的な方法は 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 を呼び出すパターンを利用します。
ここでは AWS Lambda で Lambda 関数を作成し、SORACOM Funk (以下、Funk) から呼び出せるようにする手順を解説します。
ステップ 1: AWS Lambda 関数を作成する
AWS マネージメントコンソールの "Lambda" より [関数の作成] をクリックします。その後、"一から作成" を選んだあと、以下のように入力して [関数の作成] をクリックします。
- 関数名:
my_button_func1
(任意の文字列) - ランタイム: Node.js 12.x
作成された関数の管理画面の [関数コード] を以下のように書き換えてから [保存] をクリックします。
exports.handler = async (event, context) => {
console.log(event);
console.log(context.clientContext.custom);
return { statusCode: 204 };
};
また、この関数の ARN をメモしておきます。
ステップ 2: AWS Lambda 接続用の AWS IAM ユーザーを作成する
AWS マネージメントコンソールの "IAM" より [ユーザー] > [ユーザーを追加] と進むと表示されるダイアログで以下のように入力してから [次のステップ: アクセス権限] をクリックします。
- ユーザー名:
soracom_funk_pseudo_user1
(任意の文字列) - アクセスの種類: <プログラムによるアクセス: チェックつける>
アクセス許可の設定では [既存のポリシーを直接アタッチ] をクリックした後、"AWSLambraRole" ポリシーを一覧から探してチェックを付けた後、[次のステップ: タグ] をクリックします。
lambdarole
と入れると探しやすくなります。
タグの追加は特に設定することがありません。そのまま [次のステップ: 確認] をクリックしてください。
最後の確認画面で、今までの設定が反映されているかを確認したら [ユーザーの作成] をクリックします。
ユーザーの作成が完了すると アクセスキー ID と シークレットアクセスキー が表示されます。この 2 つをメモしておいてください。(特にシークレットアクセスキーは後ほど入手することができませんので、無くさないようにしてください。)
ステップ 3: SORACOM グループを設定する
バイナリパーサー、Funk の設定はグループに対して行います
ここでは、グループの設定を変更する操作のみを説明します。グループの仕組みやグループを作成する操作について詳しくは、グループ設定 を参照してください。
SIM グループのバイナリパーサーを設定します。
バイナリパーサーの設定について詳しくは、バイナリパーサーを設定する を参照してください。
なお、
には、@button
を入力します。続けて、同じ SIM グループの SORACOM Funk を設定します。
同じ SIM グループ画面で
をクリックします。SIM グループ画面を表示する操作について詳しくは、グループの設定を変更する を参照してください。
以下のように設定します。
- サービス: AWS Lambda
- 送信データ形式: JSON
"認証情報" で [認証情報を新規作成する...] をクリックします。
表示されたダイアログで以下の通り入力した後、 [登録] をクリックします。
- 認証情報 ID:
soracom_funk_pseudo_user1_cred1
- AWS Access Key ID: <AWS IAM でメモしたアクセス ID>
- AWS Secret Access Key: <AWS IAM でメモしたシークレットアクセスキー>
登録が正常に完了すると SORACOM Funk の設定画面に戻ってきます。
- 認証情報 ID:
"認証情報" に、先ほど登録をした
soracom_funk_pseudo_user1_cred1
が表示されていることを確認して、[関数の ARN] に、先ほどメモをした ARN を入力して [保存] をクリックします。
以上で設定はすべて終了です。
ステップ 4: 動作を確認する
確認は Amazon CloudWatch で行います。ボタンを押してから LED が「緑色」になったことを確認した後、CloudWatch の管理画面から Lambda 関数 (my_button_func1
) を作成したリージョンを選んだ後、[ログ] をクリックすると "ロググループ" に /aws/lambda/my_button_func1
が作成されています。クリックしていくとログを確認できます。
トラブルシュート
- 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 の開発ドキュメントや活用方法を参照してください。
- AWS 関連
- SORACOM LTE-M Button 関連
event
の内容は、SORACOM LTE-M Button for Enterprise ユーザーガイドの 送信されるデータフォーマット を参照してください。context.clientContext.custom
の内容は、SORACOM Funk から送信されるデータフォーマット を参照してください。
ボタンのデータ利用をサーバレスで実現したい ― SORACOM Funnel + AWS IoT Core パターン
SORACOM LTE-M Button for Enterprise もしくは Plus のデータ利用をサーバレスで実現したい場合は、SORACOM Funnel を利用して AWS IoT Core を経由して AWS の各種サービスと連携するパターンを利用します。
ここでは SORACOM Funnel から AWS IoT Core を経由し、Amazon SNS を利用して Email を送ります。
ステップ 1: Amazon SNS の「トピック」を作成する
AWS マネージメントコンソールの "Simple Notification Service" より [トピック] > [トピックの作成] をクリックします。
以下のように入力して [トピックの作成] をクリックします。
- 名前:
soracom-funnel-app1
(任意の文字列) - 表示名:
soracom-funnel-app1
[サブスクリプションの作成] をクリックします。
以下のように入力して [トピックの作成] をクリックします。
- プロトコル: E メール
- エンドポイント (*1): (ボタン押下時の送信先メールアドレス)
- (*1) プロトコルを選択すると入力できるようになります。
エンドポイントに入力したメールアドレスに "AWS Notification - Subscription Confirmation" という件名のメールが送信されています。そのメールの中の [Confirm subscription] をクリックします。"Subscription confirmed!" と表示されたことを確認してください。(表示されたウィンドウは閉じてしまって構いません。また、メールは削除してしまって構いません。)
Amazon SNS の管理画面で再読み込みをした際にステータスが「確認済み」となっていることを確認してください。
ステップ 2: AWS IoT Core から SNS トピックを呼び出せるようにする
AWS IoT Core の管理画面から [ACT] > [ルールの作成] とクリックします。
表示されるダイアログで以下のように入力します。
- 名前:
invoke_to_sns1
(任意の文字列) - SQL バージョンの使用: 2016-03-23
- ルールクエリステートメント:
SELECT * FROM 'button_topic/#'
ここまで入力してから "1 つ以上のアクションを設定する" の [アクションの追加] をクリックし、"アクションの選択" から [SNS プッシュ通知としてメッセージを送信する] にチェックをしてから [アクションの設定] をクリックします。
表示されるダイアログで以下のように入力したら [ロールの作成] をクリックします。
- SNS ターゲット: soracom-funnel-app1 (*1)
- メッセージ形式: RAW
- (*1) [選択] をクリックすると一覧表示されます。
表示されるダイアログで以下のように入力したら [ロールの作成] をクリックします。
- 名前:
iotcore_rule_invoke_to_sns1
"アクションの設定" に戻ってきたら [アクションの追加] をクリックします。 "ルールの作成" に戻ってきたら [ルールの作成] をクリックします。
AWS IoT Core の管理画面から [設定] で "カスタムエンドポイント" を確認します。表示されているエンドポイントをメモしておいてください。 このとき [ステータスの確認] ボタンが表示されている場合は、このボタンをクリックしてください。エンドポイントが有効になります。
AWS IoT Core の管理画面から [テスト] の "発行" でテストをします。以下のように入力したら [トピックに発行] をクリックします。
- (テキストボックス) :
button_topic/test1
- (テキストエリア) : (特に変更の必要はありません)
ここまでの設定がすべて完了できていれば、Amazon SNS の "エンドポイント" に設定したメールアドレスに以下のようなメールが送信されています。メールを確認してください。(確認したらメールは削除してしまって構いません。)
ステップ 3: AWS IoT Core 接続用の AWS IAM ユーザーを作成する
AWS IAM の管理画面から [ユーザー] > [ユーザーを追加] と進むと表示されるダイアログで以下のように入力してから [次のステップ: アクセス権限] をクリックします。
- ユーザー名:
soracom_funnel_to_awsiotcore1
(任意の文字列) - アクセスの種類: <プログラムによるアクセス: チェックつける>
アクセス許可の設定では [既存のポリシーを直接アタッチ] をクリックした後、"AWSIoTDataAccess" ポリシーを一覧から探してチェックを付けた後、[次のステップ: タグ] をクリックします。
フィルタに awsiotdata
と入れると探しやすくなります。
タグの追加は特に設定することがありません。そのまま [次のステップ: 確認] をクリックしてください。
最後の確認画面で、今までの設定が反映されているかを確認したら [ユーザーの作成] をクリックします。
ユーザーの作成が完了すると アクセスキー ID と シークレットアクセスキー が表示されます。この 2 つをメモしておいてください。特にシークレットアクセスキーは後ほど入手することができません。
ステップ 4: SORACOM グループを設定する
バイナリパーサー、Funk の設定はグループに対して行います
ここでは、グループの設定を変更する操作のみを説明します。グループの仕組みやグループを作成する操作について詳しくは、グループ設定 を参照してください。
SIM グループのバイナリパーサーを設定します。
バイナリパーサーの設定について詳しくは、バイナリパーサーを設定する を参照してください。
なお、
には、@button
を入力します。続けて、同じ SIM グループの SORACOM Funk を設定します。
同じ SIM グループ画面で
をクリックします。SIM グループ画面を表示する操作について詳しくは、グループの設定を変更する を参照してください。
以下のように設定します。
- 転送先サービス: AWS IoT
- 転送先 URL:
https://<AWS IoT Core の設定でメモしたカスタムエンドポイント>/button_topic/data
"認証情報" の右側の [+] をクリックします。
表示されたダイアログで以下の通り入力した後、 [登録] をクリックします。
- 認証情報 ID:
soracom_funnel_to_awsiotcore_cred1
- AWS Access Key ID: <AWS IAM でメモしたアクセス ID>
- AWS Secret Access Key: <AWS IAM でメモしたシークレットアクセスキー>
登録が正常に完了すると SORACOM Funnel の設定画面に戻ってきます。
- 認証情報 ID:
"認証情報" に、先ほど登録をした
soracom_funnel_to_awsiotcore_cred1
が表示されていることが確認して、[保存] を行います。
ステップ 5: 動作を確認する
ボタンを押してから LED が「緑色」になったことを確認した後、Amazon SNS の "エンドポイント" に設定したメールアドレスに以下のようなメールが送信されています。
トラブルシュート
- 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 およびその先のサービスとの連携方法を参照するようにしてください。
- AWS 関連
- SORACOM LTE-M Button 関連
- SOARCOM Funnel から送信される JSON の内容については、SORACOM Funnel から送信されるデータフォーマット を参照してください。
- 特に
payloads
の内容は、SORACOM LTE-M Button for Enterprise ユーザーガイドの 送信されるデータフォーマット を参照してください。