Soracom

Users

スタートガイド

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 から呼び出せるようにする手順を解説します。

ステップ 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” ポリシーを一覧から探してチェックを付けた後、 [次のステップ: タグ] をクリックします。 ※ TIPS: フィルタに lambdarole と入れると探しやすくなります。

Button - Funk - AWS Lambda / iam 2

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

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

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

Button - Funk - AWS Lambda / iam 3

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

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

  • フォーマット: @button

Button - Funk - AWS Lambda / air 1

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

  • サービス: AWS Lambda
  • 送信データ形式: JSON

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

Button - Funk - AWS Lambda / funk 1

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

  • 認証情報 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 の設定画面に戻ってきます。 この時 “認証情報” に、先ほど登録をした 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 メール
  • エンドポイント: (ボタン押下時の送信先メールアドレス) ※プロトコルを選択すると入力できるようになります

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 ※ [選択] をクリックすると一覧表示されます
  • メッセージ形式: RAW

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” ポリシーを一覧から探してチェックを付けた後、 [次のステップ: タグ] をクリックします。 ※ TIPS: フィルタに awsiotdata と入れると探しやすくなります。

Button - Funnel - AWS IoT Core / iam 2

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

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

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

Button - Funnel - AWS IoT Core / iam 3

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

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

  • フォーマット: @button

Button - Funk - AWS Lambda / air 1

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

  • 転送先サービス: AWS IoT
  • 転送先 URL: https://<AWS IoT Core の設定でメモしたカスタムエンドポイント>/button_topic/data

ここまで入力してから “認証情報” の右側の [+] をクリックします。

Button - Funnel - AWS IoT Core / funnel 1

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

  • 認証情報 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 の設定画面に戻ってきます。 この時 “認証情報” に、先ほど登録をした 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 およびその先のサービスとの連携方法を参照するようにしてください。