SORACOM Beam の MQTT エントリポイント を利用して、AWS IoT Core へデバイスからデータを送信したり (下図の赤線)、デバイスに AWS IoT Core からのデータを受信したりできます (下図の青線)。ここでは、(赤線に相当する) デバイスで Beam の MQTT エントリポイントを経由して AWS IoT にデータを送信し、AWS IoT からは Amazon SNS を経由してメールを送信する方法を説明します。また、(青線に相当する) AWS IoT Core から送信したデータをデバイスで受信します。
AWS IoT Core と接続する場合は、SORACOM Beam の代わりに SORACOM Funnel を利用すると、より簡単に実装できます。詳しくは、AWS IoT アダプターを使用する を参照してください。
AWS IoT とは
AWS IoT とは、デバイス (Thing) から安全にデータをクラウドに送信し、また送信されたデータに対してルールベースで各種 AWS サービスを連携させることができるプラットフォームです。
デバイス (Thing) からクラウドへのデータ送信の方法には 2 種類用意されています。
- MQTTS : X.509 証明書を使用した TLS (Transport Layer Security) のクライアント認証
- HTTPS : IAM ユーザーやロール・Cognito を利用した認証
これ以外にも、AWS IoT Core を利用すると S3 や DynamoDB へのデータ保存、AWS Lambda の関数の実行など、様々な AWS サービスと連携できます。ぜひお試しください。
ステップ 1: AWS IoT を設定する
AWS IoT Core にモノ (Thing) を作成する
使用するデバイスをモノ (Thing) として、AWS IoT に作成します。操作手順について詳しくは、AWS IoT Core にモノ (Thing) を作成する を参照してください。
具体的には以下のように設定します。
項目 | 説明 | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
任意の文字列を入力します。例: raspi | ||||||||||||||||
|
Amazon SNS のトピックを作成する
続いて Amazon SNS を使用してメールを送信する仕組みを作成します。操作手順について詳しくは、Amazon SNS のトピックを作成する を参照してください。
具体的には以下のように設定します。
項目 | 説明 |
---|---|
「スタンダード」を選択します。 | |
任意の文字列を入力します。例: my-sns-topic | |
|
なお、ここで作成した Amazon SNS トピックの ARN を、これ以降、${sns_topic_arn} と表記します。例: arn:aws:sns:ap-northeast-1:XXXXXXXXXXXX:my-sns-topic
AWS IoT Core のルールを作成する
このページで説明する機能を体験するために、AWS IoT Core に Publish (送信) されたデータに応じて SNS トピックを呼び出すルールを作成します。操作手順について詳しくは、AWS IoT Core のルールを作成する を参照してください。
具体的には以下のように設定します。
項目 | 説明 |
---|---|
任意の文字列を入力します。例: SNS | |
「2016-03-23」を選択します。 | |
'beamdemo' という MQTT トピックに Publish されたメッセージをすべて Amazon SNS へ通知するように、以下の SQL を入力します。
| |
「Simple Notification Service (SNS)」を選択します。 | |
${sns_topic_arn} を選択します。例: Amazon SNS のトピックが見つからない場合は、リージョンを確認してください。AWS IoT Core と Amazon SNS のリージョンは同一である必要があります。 | |
「RAW」を選択します。 | |
新しいロールを作成します。
|
AWS IoT Core のデフォルトのデータエンドポイントを確認する
AWS IoT Core へデータを Publish (送信) するためのデフォルトのデータエンドポイントを確認します。詳しくは、AWS IoT Core のデフォルトのデータエンドポイントを確認する を参照してください。
このエンドポイントをこれ以降、${default_endpoint} と表記します。例: xxxxxxxxxxxxxx-ats.iot.ap-northeast-1.amazonaws.com
ステップ 2: SORACOM Beam をセットアップする
認証情報ストアに X.509 証明書を登録する
Beam から AWS IoT に登録したモノを利用するために、AWS IoT Core にモノ (Thing) を作成する で作成した証明書を、SORACOM ユーザーコンソールに登録します。
具体的には、認証情報ストアの「認証情報を登録」画面で以下のように登録します。この画面の表示方法については、認証情報を登録する を参照してください。
項目 | 説明 |
---|---|
認証情報を識別するために任意の名前を入力します。例: aws-iot | |
「X.509 証明書」を選択します。 | |
プライベートキーファイル (例: xxx...xxx-private.pem.key ) の内容を貼り付けます。(*1) | |
デバイス証明書 (例: xxx...xxx-certificate.pem.crt ) の内容を貼り付けます。(*1) | |
ルート CA 証明書の Amazon ルート CA 1 (例: AmazonRootCA1.pem ) の内容を貼り付けます。(*1) |
- (*1) ファイル名ではなく、テキストエディタなどで ファイルの内容をコピーし 貼り付けてください。
SORACOM Beam を有効化する
Beam の設定はグループに対して行います
ここでは、グループの設定を変更する操作のみを説明します。グループの仕組みやグループを作成する操作について詳しくは、グループ設定 を参照してください。
SIM グループ画面で
をクリックします。SIM グループ画面を表示する操作について詳しくは、グループの設定を変更する を参照してください。
→ の順にクリックします。
以下の項目を設定します。
項目 説明 任意の文字列を入力します。わかりやすい名前を設定します。例: AWS IoT → 「Standard」を選択します。 → 「MQTTS」を選択します。 → ${default_endpoint} を入力します。例: xxxxxxxxxxxxxx-ats.iot.ap-northeast-1.amazonaws.com
→ 「8883」を入力します。 スイッチをクリックして、オンにします。 認証情報ストアに X.509 証明書を登録する で登録した X.509 証明書を選択します。例: aws-iot をクリックします。
IoT SIM の Beam の設定が完了しました。
ステップ 3: デバイスでデータを Publish する (送信)
実際に Beam の MQTT エントリポイントを利用するデバイスで、データを Publish (送信) してみましょう。
Beam を有効化した SIM グループ に所属する IoT SIM を利用するデバイスで、以下の設定でデータを Publish します。
項目 説明 ホスト名 beam.soracom.io
トピック名 beamdemo
データ Hello, World
たとえば、デバイスが Raspberry Pi の場合は、
mosquitto_pub
を使用してデータを Publish できます。mosquitto_pub
の具体的な操作については、mosquitto_pub でトピックにデータを Publish する (送信) を参照してください。データが Beam を経由して AWS IoT Core に Publish されると、Amazon SNS 経由でメールが送信されます。
メールが届いていることを確認します。
ステップ 4: デバイスでトピックを Subscribe する (受信)
次に、Beam の MQTT エントリポイントを利用するデバイスで AWS IoT Core のトピックを Subscribe してみましょう。
Beam を有効化した SIM グループ に所属する IoT SIM を利用するデバイスで、以下の設定でトピックを Subscribe します。
項目 説明 ホスト名 beam.soracom.io
トピック名 messages/fromAWS
たとえば、デバイスが Raspberry Pi の場合は、
mosquitto_sub
を使用してトピックを Subscribe できます。mosquitto_sub
の具体的な操作については、mosquitto_sub でトピックを Subscribe する (受信) を参照してください。AWS IoT Core の MQTT テストクライアントを利用してデータを Publish (送信) します。
項目 説明 「messages/fromAWS」を入力します。 以下の内容を入力します。
{ "message": "AWS IoT コンソールからの挨拶" }
データを Publish すると、デバイスにデータが届きます。
mosquitto_sub
を利用した場合は、以下のように表示されます。Client mosq-FyNf82gCIce1UkNebM received PUBLISH (d0, q0, r0, m0, 'messages/fromAWS', ... (57 bytes)) { "message": "AWS IoT コンソールからの挨拶" }