SORACOM Developers

Documents

SORACOM Beam を使用して AWS IoT と接続する(コンソール版)

はじめに

SORACOM Beam(以下、Beam) を使用して AWS と連携する方法として、HTTP 経由で API Gateway を使用した連携について以前ご紹介させていただきました。 本記事では、2015年10月の AWS のカンファレンス Re:invent で発表された AWS IoT という新しいサービスを利用する際、 IoT デバイスから AWS IoT にデータ送信を行うために SORACOM Beam を活用する方法をご説明いたします。

SORACOM Funnel もご利用いただけます
  • AWS IoTと接続する方法としては SORACOM Beam の他、 SORACOM Funnel をご利用いただくことで、より簡単に実装することができます。併せてご検討ください。

AWS IoT とは

AWS IoT とは、デバイス(Thing)から安全にデータをクラウドに送信し、また送信されたデータに対してルールベースで各種AWSサービスを連携させる事ができるプラットフォームです。

image (AWS IoT ドキュメント : How AWS IoT Works より)

デバイス(Thing)からクラウドへのデータ送信の方法には2種類用意されています。

本記事では、MQTTS を使用してデータを投入してみたいと思います。送信されたデータは SNS を使用してメール通知してみましょう。

Beam とは

Beam は SORACOM Air の SIM を使用したデバイスからのデータ・アップロード時にクラウド側でデータ処理を行うためのプロキシーサービスです。

Beam概要

本記事では、MQTT -> MQTTS のプロトル変換(暗号化)機能を利用します。 CPUパワーがあまりなく、MQTT通信は行えるが、MQTTSでの通信を行うのが難しいようなデバイスの場合には、有用となるでしょう。

またクライアント証明書は各デバイスが利用できるようにデバイス上にコピーしておく必要がありますが、 SORACOM Beamがデバイスの代わりにクライアント証明書を使用してTLS通信を行うため、証明書の管理が楽になります。

AWS IoT の設定

AWS IoT コンソールを開き AWS IoT の設定を開始します AWS IoT

まずはデバイス(Thing)を作成します。名前を入力して、Createを押します。 ここでは、「raspi」という名前にしています。

AWS IoT

View thing で Thing の Detail 情報を表示し、右下の Connect a device ボタンを押します。 AWS IoT

Node.js を選択し、Generate Policy and Policy を押します。 AWS IoT

Private Key ファイルと Certificate ファイルをダウンロードします(後ほど使用します)。 Confirm & Start connecting を押して、 次ページで Return to Thing Detail を押します

AWS IoT

次の画面ではNode.jsのSDKを使って接続する設定が表示されますが、今回は使用しませんのでそのまま「Return to Thing Detail」のボタンをクリックします。 Thing Detail 画面から Create Rule を押します。

AWS IoT

Rule名、Descriptionを入力します。 また、今回は全てのTopicに送信されたデータの、全ての Attribute を対象にメールを送信しますので、”Attribute” に “*”(アスタリスク)、"Topic filter" に “#”(シャープ)を入力します。

AWS IoT

Rule の Action は上から2つ目の Send message as a push notification (SNS) を選択します。

AWS IoT

Create a new resource から新規作成を行います。(もしくは、通知対象の既存の SNS Topic を選択します。) また、対象の Topic に通知するための権限を付与するために、 Create a new role から Role を作成します AWS IoT

SNS Target と Role Name を指定し、「Add action」をクリックします。 AWS IoT

最後に Create を押したら、AWS IoTの設定は完了です AWS IoT

SORACOM Beam の設定

準備

証明書ファイルの用意

AWS IoT の Thing 設定の際に得られた証明書ファイルのうち、以下のファイルを準備します。

上記に加えて、以下のファイルを用意してください。

Beamの設定

SORACOM Beamの設定を行います。SORACOM Beamの設定はSORACOMのユーザーコンソールのグループ設定から行います。 ユーザーコンソールにログインして、グループタブを開きます。開いた画面で、追加ボタンをクリックし、グループを作成します。(ここでは、グループ名「AWS IoT」としています。)

AWS IoT

一覧から作成したグループをクリックします。

AWS IoT

設定画面内にある「SORACOM Beam 設定」の「+」ボタンをクリックして、「MQTTエントリポイント」を選択します。

AWS IoT

「MQTTエントリポイント」を選択します。

AWS IoT

以下のように転送先の設定を行います。

AWS IoT

次に、証明書を入力します。 既に登録されていれば候補が表示されますが、未登録の場合は「+」ボタンから追加します。

AWS IoT

認証情報 ID は任意の文字列を、半角英数字とハイフン、アンダースコアを使って入力します。 先ほどダウンロードしたファイルの内容をコピー & ペーストします。それぞれ以下のファイルとなります。 (いずれのファイルもテキストファイルですので、テキストエディタなどで内容を表示させ、コピーしてください)

AWS IoT

以上で、 Beam の設定が完了しました。

データ送信デモ

では、実際にデータを送信してみましょう。 Air SIM のグループを先ほど作成したグループに所属させます。 AWS IoT

上記グループに所属する Air SIM で通信を行っているデバイスから以下のようにコマンドを実行します。

pi@raspberrypi ~ $ mosquitto_pub -d -h beam.soracom.io -t beamdemo -m "Hello, World"
Received CONNACK
Sending PUBLISH (d0, q0, r0, m1, 'beamdemo', ... (12 bytes))

データを送信すると、SNS経由でメールを確認することができます。

AWS IoT

上記のコマンドの実行のとおり、Beam の設定を行ったグループに属する Air SIM で接続されているデバイスからは、証明書を指定することなく、AWS IoTへデータ送信を行うことができています。

Beam を使用しない場合は、AWS IoT ドキュメントの Verify MQTT Subscribe and Publish ページにもあるとおり、以下のように証明書ファイル等を指定して送信する必要があります。

$ mosquitto_pub --cafile rootCA.pem \
  --cert cert.pem \
  --key thing-private-key.pem \
  -h data.iot.us-east-1.amazonaws.com -p 8883 \
  -q 1 -d -t topic/test -i clientid2 -m "Hello, World"

デバイスでなく、Beam で証明書を付与していることがわかります。 Beam により、デバイスで証明書を保つ必要がありません。証明書の変更があった際も、Beam の設定を変更するのみで対応することが可能となります。

当ガイドでは、SNSへの通知を行いました。 これ以外にも、S3やDynamoDBへのデータ保存、Lambda Functionの実行等、様々な AWS サービスと連携出来ますので、是非お試しください。

Getting Started

SORACOM Air for セルラー

SORACOM Air for LoRaWAN

SORACOM Air for Sigfox

SORACOM Beam

SORACOM Canal/Direct/Door

SORACOM Endorse

SORACOM Funnel

SORACOM Gate

SORACOM Harvest

SORACOM Inventory

SORACOM Junction

サービス機能詳細

Developer Tools

pagetop