SORACOM Developers

SORACOM LTE-M Button デザインパターン
― AWS と連携させる

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

デザインパターン
button_design_patterns / Button - AWS IoT 1-Click, AWS Lambda
AWS サービスを活用したボタンアプリケーションを素早く構築したい方向け
button_design_patterns / Button - Beam - Amazon API Gateway, AWS Lambda
AWS サービスとの連携を最大限に活用したい方向け
button_design_patterns / Button - Funnel - AWS IoT Core, AWS Lambda
SORACOM LTE-M Button for Enterprise や Plus で AWS IoT 1-Click 同様の素早いアプリケーション構築を行いたい方向け

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

具体的な方法は SORACOM LTE-M Button powered by AWS の Getting Started をご覧ください。

SORACOM Beam + Amazon API Gateway パターン

SORACOM LTE-M Button for Enterprise もしくは Plus からAWS の各サービス連携を最大限に活用したい場合は、SORACOM Beam から Amazon API Gateway を呼び出す方法があります。

button_design_patterns / Button - Beam - Amazon API Gateway, AWS Lambda

標準では URL を知っていればどこからでもコール可能となっており、SORACOM Beam との連携も容易です。また、 HTTP リクエストを認証する仕組みも追加で実装できます。認証に関する情報は Amazon API Gateway のエンドポイントセキュリティ をご覧ください。

手順

ここでは Amazon API Gateway で API (URL) を作成し、 SORACOM Beam から呼び出せるように構成する手順を解説します。

1. AWS Lambda 関数を作成する

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

Beam - Amazon API Gateway, AWS Lambda / lambda 1

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

exports.handler = async (event) => {
    console.log(event.headers);
    console.log(event.body);
    return { statusCode: 204 };
};

Beam - Amazon API Gateway, AWS Lambda / lambda 2

2. Amazon API Gateway を作成する

AWS マネージメントコンソールの “API Gateway” より、新規 API の開始を行います。

以上を入力したら [API の作成] をクリックします。

Beam - Amazon API Gateway, AWS Lambda / api gateway 1

API Gateway 管理画面の [リソース] > [アクション] > [メソッドの作成] と進むと表示されるプルダウンの中から POST を選びます。
その後、表示される [チェックマーク] ボタンをクリックします。

Beam - Amazon API Gateway, AWS Lambda / api gateway 2

“POST - セットアップ” 画面で以下のように入力してから [保存] をクリックします。
その際 “API Gateway に、Lambda 関数を呼び出す権限を与えようとしています” と表示された場合は “OK” をクリックします。

Beam - Amazon API Gateway, AWS Lambda / api gateway 3

API Gateway 管理画面の [アクション] > [API のデプロイ] と進むと表示されるダイアログで以下のように入力してから [デプロイ] をクリックします。

Beam - Amazon API Gateway, AWS Lambda / api gateway 4

デプロイが正常に完了すると、以下のように表示されます。
URL の呼び出し に表示される URL はメモをしておいてください。SORACOM Beam の設定で利用します。

Beam - Amazon API Gateway, AWS Lambda / api gateway 5

3. SORACOM Beam の設定を行う

SORACOM IoT SIM グループの管理画面から “SORACOM Air for Cellular 設定” で [バイナリパーサー設定] を “ON” にした後、以下のように入力してから [保存] をクリックします。

Beam - Amazon API Gateway, AWS Lambda / air 1

同じ SIM グループの管理画面から “SORACOM Beam 設定” で [UDP → HTTP/HTTPS エントリポイント] をクリックした後に表示されるダイアログで以下のように入力してから [保存] をクリックします。

Beam - Amazon API Gateway, AWS Lambda / beam 1

最後に、"SIM 管理" から、LTE-M Buttom を、上記で設定した SIM グループに所属させて完了となります。

4. 確認

確認は Amazon CloudWatch で行います。 CloudWatch の管理画面から Lambda 関数 (my_button_func0) を作成したリージョンを選んだ後、 [ログ] をクリックすると “ロググループ” に /aws/lambda/my_button_func1 が作成されています。クリックしていくと、ログを確認できます。

Beam - Amazon API Gateway, AWS Lambda / testflight 1

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


トラブルシュート

Amazon API Gateway のエンドポイントセキュリティ

Amazon API Gateway のエンドポイント(URL)保護については、標準では URL を知っていればどこからでもコール可能となっています。同サービスは多くのエンドポイントセキュリティを追加で実装できます。

その中でも SORACOM Beam の機能を最大限に活用できる方法が Lambda オーソライザー による SORACOM Beam で付与した署名を検証する方法です。この手法であれば、まず最小手順で Amazon API Gateway を構成しつつ、動いているコードを変更することなく後から認証の機構を追加することが可能となります。

Beam - Amazon API Gateway, AWS Lambda / appendix lambda auth

具体的な方法は Qiita: Amazon API Gateway の Lambda オーソライザーで SORACOM Beam の署名検証 (Python 2.7) をご覧ください。

SORACOM Funnel + AWS IoT Core パターン

SORACOM LTE-M Button for Enterprise / Plus で AWS IoT 1-Click と同様のレベルで素早いアプリケーション構築を行いたい場合は、SORACOM Funnel から AWS IoT Core を通じて AWS Lambda を利用する方法があります。

button_design_patterns / Button - Funnel - AWS IoT Core, AWS Lambda

AWS IoT Core を経由することで、AWS Lambda だけでなく様々な AWS サービスとの連携を容易に行うことも可能となります。

手順

ここでは AWS IoT Core を設定し、 SORACOM Funnel から呼び出せるように構成する手順を解説します。

1. AWS Lambda 関数を作成する

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

Beam - Amazon API Gateway, AWS Lambda / lambda 1

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

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

Funnel - AWS IoT Core, AWS Lambda / lambda 2

2. AWS IoT Core から Lambda 関数を呼び出せるようにする

※ 先ほど作成した Lambda 関数と同じリージョンの AWS IoT Core を選ぶようにしてください。

AWS IoT Core の管理画面から [ACT] > [ルールの作成] と進むと表示されるダイアログで以下のように入力します。

Funnel - AWS IoT Core, AWS Lambda / iot core 1

ここまで入力してから “1 つ以上のアクションを設定する” の [アクションの追加] をクリックします。
“アクションの選択” から [メッセージデータを渡す Lambda 関数を呼び出す] にチェックをしてから [アクションの設定] をクリックします。

アクションの設定で my_button_func1 を選択し [アクションの追加] をクリックします。
※ ここで作成した Lambda 関数が選べない場合は Lambda 関数と AWS IoT Core のリージョンが異なっているので Lambda 関数の作成を行うようにしてください。

Funnel - AWS IoT Core, AWS Lambda / iot core 2

先ほどのルール設定の画面に戻ってくるので [ルールの作成] をクリックします。

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

Funnel - AWS IoT Core, AWS Lambda / iot core 2

3. AWS IoT Core 接続用の AWS IAM ユーザーを作成する

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

Funnel - AWS IoT Core, AWS Lambda / iam 1

アクセス許可の設定では [既存のポリシーを直接アタッチ] をクリックした後、 “AWSIoTDataAccess” ポリシーを一覧から探してチェックを付けた後、 [次のステップ: タグ] をクリックします。
※ TIPS: フィルタに awsiotdataaccess と入れると探しやすくなります。

Funnel - AWS IoT Core, AWS Lambda / iam 2

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

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

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

Funnel - AWS IoT Core, AWS Lambda / iam 3

4. SORACOM Funnel の設定を行う

SORACOM IoT SIM グループの管理画面から “SORACOM Air for Cellular 設定” で [バイナリパーサー設定] を “ON” にした後、以下のように入力してから [保存] をクリックします。

Beam - Amazon API Gateway, AWS Lambda / air 1

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

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

Beam - Amazon API Gateway, AWS Lambda / funnel 1

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

Funnel - AWS IoT Core, AWS Lambda / cred 1

登録が正常に完了すると SORACOM Funnel の設定画面に戻ってきます。
この時 “認証情報” に、先ほど登録をした soracom_funnel_to_awsiotcore_cred1 が表示されていることが確認できたら [保存] を行います。

5. 確認

確認は Amazon CloudWatch で行います。 CloudWatch の管理画面から Lambda 関数 (my_button_func0) を作成したリージョンを選んだ後、 [ログ] をクリックすると “ロググループ” に /aws/lambda/my_button_func1 が作成されています。クリックしていくと、ログを確認できます。

Funnel - AWS IoT Core, AWS Lambda / testflight 1

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


トラブルシュート

pagetop