SORACOM Developers

Documents

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

はじめに

SORACOM Beam(以下、Beam) を使用して AWS と連携する方法として、HTTP 経由で API Gateway を使用した連携について以前ご紹介させていただきました。 本記事では、AWS IoT Core を使用して IoT デバイスから AWS IoT Core にデータ送信を行うために SORACOM Beam を活用する方法をご説明いたします。

SORACOM Funnel もご利用いただけます
  • AWS IoT Core と接続する方法としては 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)として作成します。

AWS IoT

「単一のモノを作成する」をクリックします。

AWS IoT

ここでは、「raspi」という名前にしています。入力後、「次へ」をクリックします。

AWS IoT

モノに証明書を追加します。ここでは「証明書を作成」をクリックし 1-Click 証明書を作成します。

AWS IoT

下記の3つの証明書をダウンロードのリンクよりダウンロードします(後ほど使用します)。 また、「有効化」をクリックして証明書を有効化します。 その後、「ポリシーをアタッチ」をクリックします。

通常はここで [ポリシーのアタッチ] をクリックしモノにポリシーを割り当てますが、まだポリシーは未作成のため、ここではそのまま [完了] をクリックします。

AWS IoT

次に 安全性 > ポリシー > ポリシーの作成からデバイスに割り当てるポリシーを作成します。

AWS IoT

今回はどの MQTT topic にも Publish, Subscribe 可能なポリシーを作成します。 下記のように入力して [作成] をクリックします。

AWS IoT

次に作成したポリシーを作成したモノの証明書へ紐付けます。

安全性 > 証明書 を選択し、先ほど作成した証明書の右上の […] から [ポリシーのアタッチ] をクリックします。

AWS IoT

先ほど作成した「PubSubToAnyTopic」を選択し、[アタッチ] をクリックします。

AWS IoT

以上で AWS IoT Core へのモノの登録が完了しました。

続いて SNS を使用してメール通知するルールの作成を行っていきます。

まずは事前に SNS で通知するトピックを設定しておきます。 AWS の SNS ダッシュボードを開き、[トピック] > [新しいトピックを作成]をクリックします。

AWS IoT

トピック名 (ここでは my-sns-topic とします) を入力し、[トピックの作成]をクリックします。

AWS IoT

作成したトピックを選択し、[アクション] > [トピックへのサブスクリプション]をクリックします。

AWS IoT

プロトコルで Email を選択し、エンドポイント ( Email の場合、通知先のメールアドレス) を入力します。入力後、[サブスクリプションの作成]をクリックします。

AWS IoT

しばらくすると、設定したメールアドレスへサブスクリプションの確認メールが届きます。 届いたメールに従い「Confirm subscription」をクリックし、サブスクリプションの確認を行います。

ここまでで SNS のトピック設定ができました。

続いて AWS IoT Core に戻り、設定した SNS のトピックを使用してメール通知するようルールの設定を行います。 [ACT] > [ルールの作成]をクリックし、ルールを作成します。

AWS IoT

ルールの名前と説明を入力します。(ここでは SNS という名前にします)

AWS IoT

ルールクエリステートメントを設定します。 今回は ‘beamdemo’ という MQTT topic に publish されたメッセージを全て SNS へ通知するよう、ルールクエリステートメントに下記のように入力します。

SELECT * FROM 'beamdemo'

AWS IoT

次に「1つ以上のアクションを設定する」の下の[アクションの追加]をクリックします。

AWS IoT

[SNS プッシュ通知としてメッセージを送信する] を選択し[アクションの設定]をクリックします。

AWS IoT

SNS ターゲットは先ほど作成した SNS トピック (my-sns-topic) を設定します。 メッセージ形式は[RAW]を設定します。 IAM ロールは[新しいロールを作成]をクリックし、ロール名を設定して作成します。 上記設定ができたら、[アクションの追加]をクリックします。

AWS IoT

[ルールの作成]をクリックします。

AWS IoT

最後に、AWS IoT Core へデータを送信するためのカスタムエンドポイントを確認します。 AWS IoT Core の [設定] > カスタムエンドポイントに記載されているエンドポイントをコピーします。(後ほど使用します)

AWS IoT

以上で AWS IoT Core の設定は完了です。

SORACOM Beam の設定

準備

証明書ファイルの用意

AWS IoT Core の 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 (ランダムな値)­-ats.iot.ap-northeast-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

SORACOM Krypton

SORACOM Lagoon

Gadgets

サービス機能詳細

Developer Tools

pagetop