Soracom

Users

ドキュメント
Home ドキュメント SORACOM Beam Amazon Web Service (AWS) に送信する

AWS IoT と接続する

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
[ポリシー]
  • [ポリシー名]: 任意の文字列を入力します。例: PubSubToAnyTopic

  • [ポリシードキュメント]: モノの権限を設定します。

    ここでは、どの MQTT トピックにも Publish (送信) や Subscribe (受信) ができるポリシーを作成します。

    [ポリシー効果][ポリシーアクション][ポリシーリソース]
    許可iot:Connect*
    許可iot:Publish*
    許可iot:Receive*
    許可iot:Subscribe*

Amazon SNS のトピックを作成する

続いて Amazon SNS を使用してメールを送信する仕組みを作成します。操作手順について詳しくは、Amazon SNS のトピックを作成する を参照してください。

具体的には以下のように設定します。

項目説明
[タイプ]「スタンダード」を選択します。
[名前]任意の文字列を入力します。例: my-sns-topic
[サブスクリプション]
  • [プロトコル]: 「E メール」を選択します。
  • [エンドポイント]: 宛先になるメールアドレスを入力します。例: example@example.jp

なお、ここで作成した 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
[SQL のバージョン]「2016-03-23」を選択します。
[SQL ステートメント]

'beamdemo' という MQTT トピックに Publish されたメッセージをすべて Amazon SNS へ通知するように、以下の SQL を入力します。

SELECT * FROM 'beamdemo'
[アクション 1]「Simple Notification Service (SNS)」を選択します。
[SNS トピック]

${sns_topic_arn} を選択します。例: arn:aws:sns:ap-northeast-1:XXXXXXXXXXXX:my-sns-topic

Amazon SNS のトピックが見つからない場合は、リージョンを確認してください。AWS IoT Core と Amazon SNS のリージョンは同一である必要があります。

[メッセージ形式]「RAW」を選択します。
[IAM ロール]

新しいロールを作成します。

  • [ロール名] は任意の文字列を入力します。例: aws_iot_sns

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 ユーザーコンソールに登録します。

具体的には、認証情報ストアの「認証情報を登録」画面で以下のように登録します。この画面の表示方法については、認証情報を登録する を参照してください。

項目説明
[認証情報 ID]認証情報を識別するために任意の名前を入力します。例: aws-iot
[種別]「X.509 証明書」を選択します。
[秘密鍵 (key)]プライベートキーファイル (例: xxx...xxx-private.pem.key) の内容を貼り付けます。(*1)
[証明書 (cert)]デバイス証明書 (例: xxx...xxx-certificate.pem.crt) の内容を貼り付けます。(*1)
[CA 証明局]ルート CA 証明書の Amazon ルート CA 1 (例: AmazonRootCA1.pem) の内容を貼り付けます。(*1)
  • (*1) ファイル名ではなく、テキストエディタなどで ファイルの内容をコピーし 貼り付けてください。

SORACOM Beam を有効化する

Beam の設定はグループに対して行います

ここでは、グループの設定を変更する操作のみを説明します。グループの仕組みやグループを作成する操作について詳しくは、グループ設定 を参照してください。

  1. SIM グループ画面で [SORACOM Beam 設定] をクリックします。

    SIM グループ画面を表示する操作について詳しくは、グループの設定を変更する を参照してください。

  2. [+設定を追加する][MQTT エントリポイント] の順にクリックします。

  3. 以下の項目を設定します。

    項目説明
    [設定名]任意の文字列を入力します。わかりやすい名前を設定します。例: AWS IoT
    [転送先][種別]「Standard」を選択します。
    [転送先][プロトコル]「MQTTS」を選択します。
    [転送先][ホスト名]${default_endpoint} を入力します。例: xxxxxxxxxxxxxx-ats.iot.ap-northeast-1.amazonaws.com
    [転送先][ポート番号]「8883」を入力します。
    [クライアント証明書]スイッチをクリックして、オンにします。
    [認証情報]認証情報ストアに X.509 証明書を登録する で登録した X.509 証明書を選択します。例: aws-iot

  4. [保存] をクリックします。

  5. IoT SIM が所属するグループを切り替えます。

    IoT SIM の Beam の設定が完了しました。

ステップ 3: デバイスでデータを Publish する (送信)

実際に Beam の MQTT エントリポイントを利用するデバイスで、データを Publish (送信) してみましょう。

  1. 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 経由でメールが送信されます。

  2. メールが届いていることを確認します。

ステップ 4: デバイスでトピックを Subscribe する (受信)

次に、Beam の MQTT エントリポイントを利用するデバイスで AWS IoT Core のトピックを Subscribe してみましょう。

  1. Beam を有効化した SIM グループ に所属する IoT SIM を利用するデバイスで、以下の設定でトピックを Subscribe します。

    項目説明
    ホスト名beam.soracom.io
    トピック名messages/fromAWS

    たとえば、デバイスが Raspberry Pi の場合は、mosquitto_sub を使用してトピックを Subscribe できます。mosquitto_sub の具体的な操作については、mosquitto_sub でトピックを Subscribe する (受信) を参照してください。

  2. 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 コンソールからの挨拶"
    }