Soracom

Users

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

AWS と組み合わせる

SORACOM LTE-M Button for Enterprise または SORACOM LTE-M Button Plus (以下、ボタン) と Amazon Web Services (以下、AWS) を組み合わせて利用する主な方法は以下のとおりです。

ボタンを押したときに 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 にリクエストを送信する場合は、以下のページを参照してください。

操作を始める前に準備が必要です (クリックして確認してください)

(1) ボタンを購入する

SORACOM LTE-M Button シリーズ のいずれかのボタンを購入してください。

(2) ユーザーコンソールにボタンを登録する

ボタンにあわせて、以下のいずれかのページを参照してください。

準備完了

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

このページで説明する機能を体験するために、お客様の AWS アカウントに以下の設定の関数を作成します。操作手順について詳しくは、AWS Lambda の関数を作成する を参照してください。

項目説明
[関数名]任意の文字列を入力します。例: my_button_func1
[ランタイム]「Node.js 22.x」を選択します。
[アーキテクチャ]「x86_64」を選択します。
[コード]

index.mjs のコードを以下のように書き換えます。

export const handler = async (event, context) => {
  console.log(event);
  console.log(context);
  const response = {
    statusCode: 204
  };
  return response;
};

なお、ここで作成した関数の 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 ポリシーを作成します。

具体的には以下のように設定します。

  • [Service] (サービス): 「Lambda」を選択します。

  • [アクション]: [InvokeFunction] にチェックを入れます。

  • [リソース]: [function][ARN を追加] をクリックして、「ARN を指定」画面で以下のように設定します。

    • [次のリソース]: 「このアカウント」を選択します。
    • [リソースのリージョン]: お客様の AWS Lambda の関数を作成するリージョンを入力するか、[任意のリージョン] にチェックを入れます。
    • [Resource function name]: AWS Lambda の関数名 (例: my_button_func1) を入力します。
  • [ポリシー名]: IAM ポリシーの名前を入力します。これ以降、${iam_policy_name} と表記します。例: my_button_func1-policy

IAM ロール

このページで説明する機能を体験するために、「SORACOM の AWS アカウント」を信頼できるエンティティとして指定した IAM ロールを作成します。

具体的には以下のように設定します。

  • [信頼されたエンティティを選択]: IAM ロールの利用を許可する AWS アカウントとして、「SORACOM の AWS アカウント」を設定します。ボタンは日本カバレッジの製品です。SORACOM の日本カバレッジの AWS アカウント (762707677580) を入力します。
  • [外部 ID]: IAM ロールを利用する際に外部 ID (任意の文字列) を要求し、セキュリティを強化します。IAM ロールごとに異なる文字列を指定してください。これ以降、${external_id_invoke_function} と表記します。例: External-ID-KvKDreKaVvK28kyS
  • [許可ポリシー] (アタッチする IAM ポリシー): ${iam_policy_name} にチェックを入れます。例: my_button_func1-policy
  • [ロール名]: IAM ロールの名前 (例: my_button_func1-role) を入力します。

なお、ここで作成した IAM ロールの ARN を、これ以降、${iam_role_arn_invoke_function} と表記します。例: arn:aws:iam::XXXXXXXXXXXX:role/my_button_func1-role

ステップ 3: バイナリパーサーと SORACOM Funk をセットアップする

ボタンから送信されるデータはバイナリデータです。バイナリデータのままでは転送先サーバー (ここでは、AWS Lambda の関数) での取り扱いが難しいため、以下の機能を利用します。

機能説明
バイナリパーサーボタンから送信されたデータをパースして、JSON 形式で clickTypeclickTypeNamebatteryLevel を Funk に出力します。
Funkバイナリパーサーから出力された JSON 形式のデータを、転送先サーバー (AWS Lambda の関数) に転送します。

認証情報ストアに AWS IAM ロール認証情報を登録する

Funk から AWS Lambda の関数を呼び出すために、IAM ロールに関する認証情報を、SORACOM ユーザーコンソールに登録します。

具体的には、認証情報ストアの「認証情報を登録」画面で以下のように登録します。この画面の表示方法については、認証情報を登録する を参照してください。

項目説明
[認証情報 ID]認証情報を識別するために任意の名前を入力します。例: AWS-IAM-role-credentials-invokeFunction
[種別]「AWS IAM ロール認証情報」を選択します。
[ロール ARN]${iam_role_arn_invoke_function} を入力します。例: arn:aws:iam::XXXXXXXXXXXX:role/my_button_func1-role
[外部 ID]${external_id_invoke_function} を入力します。例: External-ID-KvKDreKaVvK28kyS

バイナリパーサーと SORACOM Funk を有効化する

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

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

  1. ユーザーコンソール にログインし、日本カバレッジの表示に変更します。

    詳しくは、SORACOM ユーザーコンソールで表示するカバレッジタイプを変更する を参照してください。

  2. [メニュー][ガジェット管理][LTE-M Button for Enterprise] の順にクリックします。

  3. 利用するボタンにチェックを入れて、[SIM グループを編集] をクリックします。

    SIM グループ画面が表示されます。まずは、SIM グループのバイナリパーサーを設定します。

  4. SIM グループ画面で [SORACOM Air for セルラー設定] をクリックします。

  5. 以下の項目を設定します。

    項目説明
    [バイナリパーサー]オンに設定します。
    [フォーマット]「@button」を入力します。

    すでに [バイナリパーサー] と [フォーマット] が設定されている場合があります

    ユーザーコンソールに Enterprise ボタンとして登録した場合は、[バイナリパーサー][フォーマット] が設定されていることがあります。上記のとおりに設定されていることを確認して、手順 7 に進みます。

  6. [SORACOM Air for セルラー設定][保存] をクリックします。

    [SORACOM Air for セルラー設定] の設定が保存されます。

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

  7. 同じ SIM グループの [SORACOM Funk 設定] をクリックします。

  8. 以下の項目を設定します。

    項目説明
    スイッチ「ON」に設定します。
    [サービス]「AWS Lambda」を選択します。
    [関数の ARN]${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 ボタンとして登録した場合は、[関数の ARN] が設定されていることがあります。上記のとおりに設定しなおしてください。

  9. [SORACOM Funk 設定][保存] をクリックします。

    [SORACOM Funk 設定] の設定が保存されます。

[SORACOM Harvest Data 設定] が設定されている場合があります

ユーザーコンソールに Enterprise ボタンとして登録した場合は、[SORACOM Harvest Data 設定] のスイッチが「on」に設定されていることがあります。スイッチを「off」にすることを推奨します。

スイッチを「on」のまま使用する場合は、[Unified Endpoint 設定][フォーマット] で「SORACOM Funk」を選択してください。

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

確認は Amazon CloudWatch で行います。

  1. ボタンを押して、ボタンの LED が緑色に点灯したことを確認します。

    LED が赤色に点灯したときは
    • 電波状況が良い場所に移動してボタンを押しなおします。
    • ボタンが SIM グループに所属していることを確認します。
    • バイナリパーサーが設定されていることをもう一度確認してください。[SORACOM Air for セルラー設定][保存] をクリックしないと、バイナリパーサーの設定は保存されません。詳しくは、バイナリパーサーと SORACOM Funk を有効化する を参照してください。
    [SORACOM Funk 設定] に誤りがあっても LED が緑色に点灯することがあります

    [SORACOM Harvest Data 設定] のスイッチが「off」になっていることを確認してください。このスイッチが「on」になっていると、ボタンに Unified 形式 のレスポンスが返されます。その結果、[SORACOM Funk 設定] に誤りがあっても LED が緑色に点灯します。

    [SORACOM Harvest Data 設定] のスイッチを「on」のまま使用する場合は、[SORACOM Funk 設定] に誤りがあったときに LED を赤色に点灯させるために、[Unified Endpoint 設定][フォーマット] で「SORACOM Funk」を選択してください。詳しくは、レスポンスの形式を設定する を参照してください。

  2. AWS Lambda コンソール にアクセスして、ステップ 1: AWS Lambda の関数を作成する で作成した関数の画面を表示します。

  3. [モニタリング][CloudWatch ログを表示] の順にクリックします。

  4. ログストリームをクリックします。

  5. ログを確認します。

    • 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
[サブスクリプション]
  • [プロトコル]: 「E メール」を選択します。
  • [エンドポイント]: 宛先になるメールアドレスを入力します。例: example@example.jp

なお、ここで作成した 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 のドメイン設定を作成します。

具体的には以下のように設定します。

  • [ドメイン設定名]: 任意の文字列を入力します。例: soracom-funnel-app1
  • [セキュリティポリシーを選択]: 「IoTSecurityPolicy_TLS13_1_2_2022_10」(デフォルト) を選択します。
  • [認証タイプ]: 「デフォルト」を選択します。
  • [カスタムオーソライザー]: 「カスタムオーソライザーなし」を選択します。
  • [ドメイン設定のステータス]: 「有効にする」を選択します。

なお、ここで作成したドメイン名を、これ以降、${device_data_endpoint} と表記します。例: <ランダムな文字列>.iot.ap-northeast-1.amazonaws.com

ルール

このページで説明する機能を体験するために、AWS IoT Core のルールを作成します。

具体的には以下のように設定します。

  • [ルール名]: 任意の文字列を入力します。例: invoke_to_sns1

  • [SQL のバージョン]: 「2016-03-23」を選択します。

  • [SQL ステートメント]: 以下の SQL を入力します。

    SELECT * FROM 'button_topic/#'
    
  • [アクション 1]: 「Simple Notification Service (SNS)」を選択します。

  • [SNS トピック]: ${sns_topic_arn} を選択します。例: arn:aws:sns:ap-northeast-1:XXXXXXXXXXXX:soracom-funnel-app1

    Amazon SNS のトピックが見つからない場合は、リージョンを確認してください。AWS IoT Core と Amazon SNS のリージョンは同一である必要があります。

  • [メッセージ形式]: 「RAW」を選択します。

  • [IAM ロール]: 新しいロールを作成します。IAM ロールの名前は任意の文字列を入力します。例: iotcore_rule_invoke_to_sns1

ステップ 3: IAM ポリシーと IAM ロールを作成する

Funnel の AWS IoT アダプターが、お客様の AWS アカウントの AWS IoT Core へメッセージを Publish するために、お客様の AWS アカウントに以下の設定の IAM ポリシーと IAM ロールを作成します。操作手順について詳しくは、IAM ポリシーと IAM ロールを作成する を参照してください。

項目説明
IAM ポリシー

このページで説明する機能を体験するために、IAM ポリシーを作成し、お客様の AWS アカウントの AWS IoT のトピック (button_topic/*) に対して、Publish する権限を追加します。

具体的には以下のように設定します。

  • [Service] (サービス): 「IoT」を選択します。

  • [アクション]: [Publish] にチェックを入れます。

  • [リソース]: [ARN を追加] をクリックして、「ARN を指定」画面で以下のように設定します。

    • [次のリソース]: 「このアカウント」を選択します。
    • [リソースのリージョン]: お客様の AWS リソース (AWS IoT など) を作成するリージョンを入力するか、[任意のリージョン] にチェックを入れます。
    • [Resource topic name]: トピック名 (例: button_topic/*) を入力するか、[任意の topic name] にチェックを入れます。
  • [ポリシー名]: IAM ポリシーの名前を入力します。これ以降、${iam_policy_name} と表記します。例: button-test-aws-iot-policy

IAM ロール

このページで説明する機能を体験するために、「SORACOM の AWS アカウント」を信頼できるエンティティとして指定した IAM ロールを作成します。

具体的には以下のように設定します。

  • [信頼されたエンティティを選択]: IAM ロールの利用を許可する AWS アカウントとして、「SORACOM の AWS アカウント」を設定します。ボタンは日本カバレッジの製品です。SORACOM の日本カバレッジの AWS アカウント (762707677580) を入力します。
  • [外部 ID]: IAM ロールを利用する際に外部 ID (任意の文字列) を要求し、セキュリティを強化します。IAM ロールごとに異なる文字列を指定してください。これ以降、${external_id_iot_publish} と表記します。例: External-ID-p7KE92QXv4PrHKM3
  • [許可ポリシー] (アタッチする IAM ポリシー): ${iam_policy_name} にチェックを入れます。例: button-test-aws-iot-policy
  • [ロール名]: IAM ロールの名前 (例: button-test-aws-iot-role) を入力します。

なお、ここで作成した IAM ロールの ARN を、これ以降、${iam_role_arn_iot_publish} と表記します。例: arn:aws:iam::XXXXXXXXXXXX:role/button-test-aws-iot-role

ステップ 4: バイナリパーサーと SORACOM Funnel をセットアップする

ボタンから送信されるデータはバイナリデータです。バイナリデータのままでは転送先サーバー (ここでは、AWS Lambda の関数) での取り扱いが難しいため、以下の機能を利用します。

機能説明
バイナリパーサーボタンから送信されたデータをパースして、JSON 形式で clickTypeclickTypeNamebatteryLevel を Funnel に出力します。
Funnelバイナリパーサーから出力された JSON 形式のデータを、AWS IoT アダプターを利用して AWS IoT Core に転送します。

認証情報ストアに AWS IAM ロール認証情報を登録する

Funnel から AWS IoT Core にデータを Publish (送信) するために、IAM ロールに関する認証情報を、SORACOM ユーザーコンソールに登録します。

具体的には、認証情報ストアの「認証情報を登録」画面で以下のように登録します。この画面の表示方法については、認証情報を登録する を参照してください。

項目説明
[認証情報 ID]認証情報を識別するために任意の名前を入力します。例: AWS-IAM-role-credentials-IoT-Publish
[種別]「AWS IAM ロール認証情報」を選択します。
[ロール ARN]${iam_role_arn_iot_publish} を入力します。例: arn:aws:iam::XXXXXXXXXXXX:role/button-test-aws-iot-role
[外部 ID]${external_id_iot_publish} を入力します。例: External-ID-p7KE92QXv4PrHKM3

バイナリパーサーと SORACOM Funnel を有効化する

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

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

  1. ユーザーコンソール にログインし、日本カバレッジの表示に変更します。

    詳しくは、SORACOM ユーザーコンソールで表示するカバレッジタイプを変更する を参照してください。

  2. [メニュー][ガジェット管理][LTE-M Button for Enterprise] の順にクリックします。

  3. 利用するボタンにチェックを入れて、[SIM グループを編集] をクリックします。

    SIM グループ画面が表示されます。まずは、SIM グループのバイナリパーサーを設定します。

  4. SIM グループ画面で [SORACOM Air for セルラー設定] をクリックします。

  5. 以下の項目を設定します。

    項目説明
    [バイナリパーサー]オンに設定します。
    [フォーマット]「@button」を入力します。

    すでに [バイナリパーサー] と [フォーマット] が設定されている場合があります

    ユーザーコンソールに Enterprise ボタンとして登録した場合は、[バイナリパーサー][フォーマット] が設定されていることがあります。上記のとおりに設定されていることを確認して、手順 7 に進みます。

  6. [SORACOM Air for セルラー設定][保存] をクリックします。

    [SORACOM Air for セルラー設定] の設定が保存されます。

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

  7. 同じ SIM グループの [SORACOM Funnel 設定] をクリックします。

  8. 以下の項目を設定します。

    項目説明
    スイッチ「ON」に設定します。
    [転送先サービス]「AWS IoT」を選択します。
    [転送先 URL]「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) [転送先 URL] には、プレースホルダー (#{imsi}#{simId}#{imei}) を指定できます。プレースホルダーは、Funnel でデータが転送される際に、それぞれ IoT SIM の IMSI、SIM ID、IMEI に置き換えられます。SIM ID を使う場合は、設定画面下段の [SIM ID を追加] を ON にします。

    すでに [関数の ARN] が設定されている場合があります

    ユーザーコンソールに Enterprise ボタンとして登録した場合は、[関数の ARN] が設定されていることがあります。上記のとおりに設定しなおしてください。

  9. [SORACOM Funnel 設定][保存] をクリックします。

    [SORACOM Funnel 設定] の設定が保存されます。

[SORACOM Harvest Data 設定] が設定されている場合があります

ユーザーコンソールに Enterprise ボタンとして登録した場合は、[SORACOM Harvest Data 設定] のスイッチが「on」に設定されていることがあります。スイッチを「off」にすることを推奨します。

スイッチを「on」のまま使用する場合は、[Unified Endpoint 設定][フォーマット] で「SORACOM Funk」を選択してください。

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

  1. ボタンを押して、ボタンの LED が緑色に点灯したことを確認します。

    LED が赤色に点灯したときは
    • 電波状況が良い場所に移動してボタンを押しなおします。
    • ボタンが SIM グループに所属していることを確認します。
    • バイナリパーサーが設定されていることをもう一度確認してください。[SORACOM Air for セルラー設定][保存] をクリックしないと、バイナリパーサーの設定は保存されません。詳しくは、バイナリパーサーと SORACOM Funk を有効化する を参照してください。
  2. Amazon SNS の [エンドポイント] に設定したメールアドレスに以下のようなメールが送信されていることを確認します。

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

ここではボタンが送信したデータを、JSON 形式に変換してメールで送付する方法を紹介しました。実際の活用では、AWS IoT Core のルールによって別のサービスを呼び出します。AWS IoT Core について詳しくは、AWS IoT Core ドキュメント を参照してください。