SORACOM LTE-M Button for Enterprise または SORACOM LTE-M Button Plus (以下、ボタン) と Amazon Web Services (以下、AWS) を組み合わせて利用する主な方法は以下のとおりです。
- ボタンを押したときに AWS Lambda にリクエストを送信する
- ボタンを押したときに AWS IoT Core を経由して AWS の各種サービスにリクエストを送信する ― SORACOM Funnel + AWS IoT Core パターン
ボタンを押したときに AWS Lambda にリクエストを送信する ― SORACOM Funk + AWS Lambda パターン
ここでは例としてボタンを押したときに、Funk を利用して AWS Lambda にリクエストを送信する方法を紹介します。
SORACOM Beam + AWS Lambda パターン
ボタンを押したときに、データは Unified Endpoint に送信されるため、Funk の代わりに Beam を利用して AWS Lambda にリクエストを送信することもできます。Beam を利用して AWS Lambda の関数にリクエストを送信する設定について詳しくは、IAM 認証を利用して AWS Lambda にリクエストを送信する を参照してください。
ボタン以外のデバイスを利用して AWS Lambda にリクエストを送信する場合は、以下のページを参照してください。
- IAM 認証を利用して AWS Lambda にリクエストを送信する (Beam を利用した方法)
- AWS Lambda を実行し Slack へ通知する (Funk を利用した方法)
操作を始める前に準備が必要です (クリックして確認してください)
(1) ボタンを購入する
SORACOM LTE-M Button シリーズ のいずれかのボタンを購入してください。
(2) ユーザーコンソールにボタンを登録する
ボタンにあわせて、以下のいずれかのページを参照してください。
準備完了ステップ 1: AWS Lambda の関数を作成する
このページで説明する機能を体験するために、お客様の AWS アカウントに以下の設定の関数を作成します。操作手順について詳しくは、AWS Lambda の関数を作成する を参照してください。
項目 | 説明 |
---|---|
任意の文字列を入力します。例: my_button_func1 | |
「Node.js 22.x」を選択します。 | |
「x86_64」を選択します。 | |
|
なお、ここで作成した関数の ARN を、これ以降、${lambda_function_arn} と表記します。例: arn:aws:lambda:ap-northeast-1:XXXXXXXXXXXX:function:my_button_func1
ステップ 2: IAM ポリシーと IAM ロールを作成する
Funk が、お客様の AWS アカウントの AWS Lambda の関数 URL を呼び出すために、お客様の AWS アカウントに以下の設定の IAM ポリシーと IAM ロールを作成します。操作手順について詳しくは、IAM ポリシーと IAM ロールを作成する を参照してください。
項目 | 説明 |
---|---|
IAM ポリシー | このページで説明する機能を体験するために、お客様の AWS アカウントの AWS Lambda の関数 を呼び出す権限を追加した IAM ポリシーを作成します。 具体的には以下のように設定します。
|
IAM ロール | このページで説明する機能を体験するために、「SORACOM の AWS アカウント」を信頼できるエンティティとして指定した IAM ロールを作成します。 具体的には以下のように設定します。
なお、ここで作成した IAM ロールの ARN を、これ以降、${iam_role_arn_invoke_function} と表記します。例:
|
ステップ 3: バイナリパーサーと SORACOM Funk をセットアップする
ボタンから送信されるデータはバイナリデータです。バイナリデータのままでは転送先サーバー (ここでは、AWS Lambda の関数) での取り扱いが難しいため、以下の機能を利用します。
機能 | 説明 |
---|---|
バイナリパーサー | ボタンから送信されたデータをパースして、JSON 形式で clickType 、clickTypeName 、batteryLevel を Funk に出力します。 |
Funk | バイナリパーサーから出力された JSON 形式のデータを、転送先サーバー (AWS Lambda の関数) に転送します。 |
認証情報ストアに AWS IAM ロール認証情報を登録する
Funk から AWS Lambda の関数を呼び出すために、IAM ロールに関する認証情報を、SORACOM ユーザーコンソールに登録します。
具体的には、認証情報ストアの「認証情報を登録」画面で以下のように登録します。この画面の表示方法については、認証情報を登録する を参照してください。
項目 | 説明 |
---|---|
認証情報を識別するために任意の名前を入力します。例: AWS-IAM-role-credentials-invokeFunction | |
「AWS IAM ロール認証情報」を選択します。 | |
${iam_role_arn_invoke_function} を入力します。例: arn:aws:iam::XXXXXXXXXXXX:role/my_button_func1-role | |
${external_id_invoke_function} を入力します。例: External-ID-KvKDreKaVvK28kyS |
バイナリパーサーと SORACOM Funk を有効化する
バイナリパーサー、Funk の設定はグループに対して行います
ここでは、グループの設定を変更する操作のみを説明します。グループの仕組みやグループを作成する操作について詳しくは、グループ設定 を参照してください。
ユーザーコンソール にログインし、日本カバレッジの表示に変更します。
詳しくは、SORACOM ユーザーコンソールで表示するカバレッジタイプを変更する を参照してください。
→ → の順にクリックします。
利用するボタンにチェックを入れて、
をクリックします。SIM グループ画面が表示されます。まずは、SIM グループのバイナリパーサーを設定します。
SIM グループ画面で
をクリックします。以下の項目を設定します。
項目 説明 オンに設定します。 「@button」を入力します。 すでに [バイナリパーサー] と [フォーマット] が設定されている場合があります
ユーザーコンソールに Enterprise ボタンとして登録した場合は、
と が設定されていることがあります。上記のとおりに設定されていることを確認して、手順 7 に進みます。の をクリックします。
の設定が保存されます。
続けて、同じ SIM グループの SORACOM Funk を設定します。
同じ SIM グループの
をクリックします。以下の項目を設定します。
項目 説明 スイッチ 「ON」に設定します。 「AWS Lambda」を選択します。 ${lambda_function_arn} を入力します。例: arn:aws:lambda:ap-northeast-1:XXXXXXXXXXXX:function:my_button_func1
認証情報ストアに AWS IAM ロール認証情報を登録する で登録した AWS IAM ロール認証情報を選択します。例: AWS-IAM-role-credentials-invokeFunction
「JSON」を選択します。 すでに [関数の ARN] が設定されている場合があります
ユーザーコンソールに Enterprise ボタンとして登録した場合は、
が設定されていることがあります。上記のとおりに設定しなおしてください。の をクリックします。
の設定が保存されます。
[SORACOM Harvest Data 設定] が設定されている場合があります
ユーザーコンソールに Enterprise ボタンとして登録した場合は、
のスイッチが「on」に設定されていることがあります。スイッチを「off」にすることを推奨します。スイッチを「on」のまま使用する場合は、
→ で「SORACOM Funk」を選択してください。ステップ 4: 動作を確認する
確認は Amazon CloudWatch で行います。
ボタンを押して、ボタンの LED が緑色に点灯したことを確認します。
LED が赤色に点灯したときは
- 電波状況が良い場所に移動してボタンを押しなおします。
- ボタンが SIM グループに所属していることを確認します。
- バイナリパーサーが設定されていることをもう一度確認してください。バイナリパーサーと SORACOM Funk を有効化する を参照してください。 の をクリックしないと、バイナリパーサーの設定は保存されません。詳しくは、
[SORACOM Funk 設定] に誤りがあっても LED が緑色に点灯することがあります
Unified 形式 のレスポンスが返されます。その結果、 に誤りがあっても LED が緑色に点灯します。
のスイッチが「off」になっていることを確認してください。このスイッチが「on」になっていると、ボタンにレスポンスの形式を設定する を参照してください。
のスイッチを「on」のまま使用する場合は、 に誤りがあったときに LED を赤色に点灯させるために、 → で「SORACOM Funk」を選択してください。詳しくは、AWS Lambda コンソール にアクセスして、ステップ 1: AWS Lambda の関数を作成する で作成した関数の画面を表示します。
→ の順にクリックします。
ログストリームをクリックします。
ログを確認します。
INFO { clickType: 1, clickType...
のように表示されている行をクリックすると、AWS Lambda の関数に渡されたevent
を確認できます。出力された内容については、「SORACOM LTE-M Button for Enterprise ユーザーガイド」の 送信されるデータフォーマット を参照してください。INFO { callbackWaitsForEmptyEv...
のように表示されている行をクリックすると、AWS Lambda の関数に渡されたcontext
を確認できます。出力された内容については、「SORACOM Funk から送信されるデータフォーマット」の Node.js ランタイムの場合 を参照してください。
この後の開発に向けた情報源
ここではボタンが送信したデータを、JSON 形式に変換して CloudWatch にログとして出力する方法を紹介しました。実際の活用では、AWS Lambda の関数からほかのサービスにデータを転送します。AWS Lambda について詳しくは、AWS Lambda ドキュメント や活用方法を参照してください。
ボタンを押したときに AWS IoT Core を経由して AWS の各種サービスにリクエストを送信する ― SORACOM Funnel + AWS IoT Core パターン
ボタンを押したときに、AWS の各種サービスにリクエストを送信することもできます。具体的には、Funnel を利用して AWS IoT Core に転送して、AWS IoT Core から AWS の各種サービスにリクエストを送信します。
ここでは例としてボタンを押したときに、Funnel を利用して AWS IoT Core にリクエストを転送し、Amazon SNS を利用してメールを送信する方法を紹介します。
操作を始める前に準備が必要です (クリックして確認してください)
(1) ボタンを購入する
SORACOM LTE-M Button シリーズ のいずれかのボタンを購入してください。
(2) ユーザーコンソールにボタンを登録する
ボタンにあわせて、以下のいずれかのページを参照してください。
準備完了ステップ 1: Amazon SNS のトピックを作成する
続いて Amazon SNS を使用してメールを送信する仕組みを作成します。操作手順について詳しくは、Amazon SNS のトピックを作成する を参照してください。
具体的には以下のように設定します。
項目 | 説明 |
---|---|
「スタンダード」を選択します。 | |
任意の文字列を入力します。例: soracom-funnel-app1 | |
|
なお、ここで作成した Amazon SNS のトピック (以下、SNS トピック) の ARN を、これ以降、${sns_topic_arn} と表記します。例: arn:aws:sns:ap-northeast-1:XXXXXXXXXXXX:soracom-funnel-app1
ステップ 2: AWS IoT Core のドメイン設定とルールを作成する
SORACOM 経由でデータを送信する URL (AWS IoT Core のドメイン設定) と、AWS IoT Core に送信されたデータに応じて SNS トピックを呼び出すルールを作成します。操作手順について詳しくは、AWS IoT Core のドメイン設定とルールを作成する を参照してください。
ここでは、https://${AWS IoT Core で設定したドメイン}/button_topic/*
(*
は任意の文字列) に送信されたデータのうち、「temp」フィールド (センサーで取得した温度) の値が特定の値を上回った場合に、Amazon SNS に通知するルールを作成します。
項目 | 説明 |
---|---|
ドメイン設定 | このページで説明する機能を体験するために、AWS IoT Core のドメイン設定を作成します。 具体的には以下のように設定します。
なお、ここで作成したドメイン名を、これ以降、${device_data_endpoint} と表記します。例: |
ルール | このページで説明する機能を体験するために、AWS IoT Core のルールを作成します。 具体的には以下のように設定します。
|
ステップ 3: IAM ポリシーと IAM ロールを作成する
Funnel の AWS IoT アダプターが、お客様の AWS アカウントの AWS IoT Core へメッセージを Publish するために、お客様の AWS アカウントに以下の設定の IAM ポリシーと IAM ロールを作成します。操作手順について詳しくは、IAM ポリシーと IAM ロールを作成する を参照してください。
項目 | 説明 |
---|---|
IAM ポリシー | このページで説明する機能を体験するために、IAM ポリシーを作成し、お客様の AWS アカウントの AWS IoT のトピック ( 具体的には以下のように設定します。
|
IAM ロール | このページで説明する機能を体験するために、「SORACOM の AWS アカウント」を信頼できるエンティティとして指定した IAM ロールを作成します。 具体的には以下のように設定します。
なお、ここで作成した IAM ロールの ARN を、これ以降、${iam_role_arn_iot_publish} と表記します。例:
|
ステップ 4: バイナリパーサーと SORACOM Funnel をセットアップする
ボタンから送信されるデータはバイナリデータです。バイナリデータのままでは転送先サーバー (ここでは、AWS Lambda の関数) での取り扱いが難しいため、以下の機能を利用します。
機能 | 説明 |
---|---|
バイナリパーサー | ボタンから送信されたデータをパースして、JSON 形式で clickType 、clickTypeName 、batteryLevel を Funnel に出力します。 |
Funnel | バイナリパーサーから出力された JSON 形式のデータを、AWS IoT アダプターを利用して AWS IoT Core に転送します。 |
認証情報ストアに AWS IAM ロール認証情報を登録する
Funnel から AWS IoT Core にデータを Publish (送信) するために、IAM ロールに関する認証情報を、SORACOM ユーザーコンソールに登録します。
具体的には、認証情報ストアの「認証情報を登録」画面で以下のように登録します。この画面の表示方法については、認証情報を登録する を参照してください。
項目 | 説明 |
---|---|
認証情報を識別するために任意の名前を入力します。例: AWS-IAM-role-credentials-IoT-Publish | |
「AWS IAM ロール認証情報」を選択します。 | |
${iam_role_arn_iot_publish} を入力します。例: arn:aws:iam::XXXXXXXXXXXX:role/button-test-aws-iot-role | |
${external_id_iot_publish} を入力します。例: External-ID-p7KE92QXv4PrHKM3 |
バイナリパーサーと SORACOM Funnel を有効化する
バイナリパーサー、Funnel の設定はグループに対して行います
ここでは、グループの設定を変更する操作のみを説明します。グループの仕組みやグループを作成する操作について詳しくは、グループ設定 を参照してください。
ユーザーコンソール にログインし、日本カバレッジの表示に変更します。
詳しくは、SORACOM ユーザーコンソールで表示するカバレッジタイプを変更する を参照してください。
→ → の順にクリックします。
利用するボタンにチェックを入れて、
をクリックします。SIM グループ画面が表示されます。まずは、SIM グループのバイナリパーサーを設定します。
SIM グループ画面で
をクリックします。以下の項目を設定します。
項目 説明 オンに設定します。 「@button」を入力します。 すでに [バイナリパーサー] と [フォーマット] が設定されている場合があります
ユーザーコンソールに Enterprise ボタンとして登録した場合は、
と が設定されていることがあります。上記のとおりに設定されていることを確認して、手順 7 に進みます。の をクリックします。
の設定が保存されます。
続けて、同じ SIM グループの SORACOM Funnel を設定します。
同じ SIM グループの
をクリックします。以下の項目を設定します。
項目 説明 スイッチ 「ON」に設定します。 「AWS IoT」を選択します。 「https://${device_data_endpoint}/button_topic/#{imsi}」を入力します。例: <ランダムな文字列>.iot.ap-northeast-1.amazonaws.com/button_topic/#{imsi}
。#{imsi}
はプレースホルダー (*1) です。認証情報ストアに AWS IAM ロール認証情報を登録する で登録した認証情報を選択します。例: AWS-IAM-role-credentials-IoT-Publish
「JSON」を選択します。SORACOM Funnel から送信されるデータ を参照してください。 について詳しくは、- (*1)
#{imsi}
、#{simId}
、#{imei}
) を指定できます。プレースホルダーは、Funnel でデータが転送される際に、それぞれ IoT SIM の IMSI、SIM ID、IMEI に置き換えられます。SIM ID を使う場合は、設定画面下段の を ON にします。 には、プレースホルダー (
すでに [関数の ARN] が設定されている場合があります
ユーザーコンソールに Enterprise ボタンとして登録した場合は、
が設定されていることがあります。上記のとおりに設定しなおしてください。- (*1)
の をクリックします。
の設定が保存されます。
[SORACOM Harvest Data 設定] が設定されている場合があります
ユーザーコンソールに Enterprise ボタンとして登録した場合は、
のスイッチが「on」に設定されていることがあります。スイッチを「off」にすることを推奨します。スイッチを「on」のまま使用する場合は、
→ で「SORACOM Funk」を選択してください。ステップ 5: 動作を確認する
ボタンを押して、ボタンの LED が緑色に点灯したことを確認します。
LED が赤色に点灯したときは
- 電波状況が良い場所に移動してボタンを押しなおします。
- ボタンが SIM グループに所属していることを確認します。
- バイナリパーサーが設定されていることをもう一度確認してください。バイナリパーサーと SORACOM Funk を有効化する を参照してください。 の をクリックしないと、バイナリパーサーの設定は保存されません。詳しくは、
Amazon SNS の
に設定したメールアドレスに以下のようなメールが送信されていることを確認します。- Funnel から送信される JSON の内容については、SORACOM Funnel から送信されるデータフォーマット を参照してください。
payloads
の内容については、「SORACOM LTE-M Button for Enterprise ユーザーガイド」の 送信されるデータフォーマット を参照してください。
この後の開発に向けた情報源
ここではボタンが送信したデータを、JSON 形式に変換してメールで送付する方法を紹介しました。実際の活用では、AWS IoT Core のルールによって別のサービスを呼び出します。AWS IoT Core について詳しくは、AWS IoT Core ドキュメント を参照してください。