2.12 AWS IoT Coreの設定

本チュートリアルでは下記利用を想定した設定方法とメッセージの送受信例を説明いたします。

・転送先クラウド:AWS

・認証:X.509

・IoT Connect Gateway:スタンダード機能

・プロトコル:MQTT→MQTTS、HTTP→HTTPS


AWS IoT の設定

  1. AWS IoT コンソール にアクセスし、サインインします。

    例) https://ap-northeast-1.console.aws.amazon.com/iot/home?region=ap-northeast-1#/home

  2. [管理] → [すべてのデバイス] → [モノ] の順にクリックします。

    aws
  3. [モノを作成] をクリックします。

    aws
  4. [1つのモノを作成] を選択し、[次へ] をクリックします。

    aws
  5. [モノの名前] に任意の名前を入力し、[次へ] をクリックします。

    aws
  6. [新しい証明書を自動生成 (推奨)] を選択し、[次へ] をクリックします。

    aws
  7. ここではポリシー未作成のため、ポリシーをアタッチせずに [モノを作成] をクリックします。

    aws
  8. 以下4つのファイルをダウンロードするために、対応する [ダウンロード] をクリックし、[完了] をクリックします。

    下記証明書は、IoT Connect Gateway設定時に使用します。

    ・デバイス証明書:XXXXX-certificate.pem.crt

    ・パブリックキーファイル:XXXXX.public.pem.key

    ・プライベートキーファイル:XXXXX.private.pem.key

    ・Amazon ルート CA 1: AmazonRootCA1.pem

    aws
  9. [管理] → [セキュリティ] → [ポリシー] → [ポリシーを作成] の順にクリックします。

    aws
  10. 各項目を設定します。

    ・[ポリシー名] : 任意の名前 例) PubSubToAnyTopic

    ・[ポリシー効果] : 「許可」

    ・[ポリシーアクション] : iot:Connect

    ・[ポリシーリソース] : *

    aws
  11. [新しいステートメントを追加]をクリックし、以下の項目を追加します。

    ・[ポリシー効果] : 「許可」

    ・[ポリシーアクション] : iot:Publish,iot:Receive,iot:Subscribe

    ・[ポリシーリソース] : *

    aws
  12. [作成]をクリックします。


  1. [管理] → [セキュリティ] → [証明書] の順にクリックし、手順 8 でダウンロードしたデバイス証明書ファイル (XXXXX-certificate.pem.crt) のファイル名の先頭 (XXXXXの部分) をコピーして、[証明書を見つける] のサーチボックスに貼り付けます。

  2. 作成した証明証が表示されるので、証明書にチェックを入れて、[アクション] → [ポリシーをアタッチ] の順にクリックします。

    aws
  3. [AWS IoT ポリシー を選択] をクリックし、手順 9 ~ 12 で作成したポリシー (例:PubSubToAnyTopic)にチェックを入れて、[ポリシーをアタッチ] をクリックします。

    aws
  4. 左ペインの[設定] をクリックし、[デバイスデータエンドポイント] の [エンドポイント] に表示されている内容をコピーします。

    このエンドポイントは、IoT Connect Gateway設定時に使用します。

    aws

以上で AWS IoT へのモノの登録が完了となります。


IoT Connect Gatewayの設定

  1. 下記、ご利用クラウドの認証情報登録を参考に認証情報の設定をします。

    https://sdpf.ntt.com/services/docs/icgw/tutorials/rsts/common/create_auth/index.html

    ・クラウド : AWS

    ・証明書種別 : X.509

    ・認証名 : 任意の認証名


  1. 認証設定の下記赤枠にてAWS設定時にダウンロードした証明書をテキストエディタで開き、内容をコピーして貼り付けます。

    ・RSA秘密鍵

    プライベートキーファイル XXXXX.private.pem.key

    ・証明書

    デバイス証明書 XXXXX-certificate.pem.crt

    ・CA認証局

    Amazon ルート CA 1 AmazonRootCA1.pem

aws

  1. 下記を参考に設定をします。

「グループ」の作成

https://sdpf.ntt.com/services/docs/icgw/tutorials/rsts/common/create_group/index.html


「グループ」へのSIMの割当

https://sdpf.ntt.com/services/docs/icgw/tutorials/rsts/common/add_sims/index.html


「スタンダード(MQTTプロトコル)」 でクラウドに接続する ※MQTTで接続する場合の設定手順 https://sdpf.ntt.com/services/docs/icgw/tutorials/rsts/standard/mqtt/index.html

注釈

  • 宛先設定のホスト名にはAWS設定時にコピーしたエンドポイントを使用します。

「スタンダード(HTTPプロトコル)」 でクラウドに接続する ※HTTPで接続する場合の設定手順 https://sdpf.ntt.com/services/docs/icgw/tutorials/rsts/standard/http/index.html

注釈

  • エントリーポイントのデバイス側Path指定をOFFに設定し、Pathには任意のPathを設定します。例) /AWS_message_test
  • 宛先設定のホスト名にはAWS設定時にコピーしたエンドポイントを使用します。
  • 宛先Pathは、 /topics/[任意の宛先Path] を設定します。例) /topics/test/

以上でIoT Connect Gateway側の設定が完了となります。


メッセージの送受信

デバイスとクラウド間のメッセージ送受信例を説明いたします。


デバイスからAWS IoT CoreにMQTTでメッセージを送信する

  1. AWS IoT コンソール にアクセスし、サインインします。

    例) https://ap-northeast-1.console.aws.amazon.com/iot/home?region=ap-northeast-1#/home


  1. [MQTT テストクライアント]をクリックし、[トピックをサブスクライブする]をクリックします。

  2. [トピックのフィルター]に、トピックを入力後、[サブスクライブ]をクリックし、このページを開いたままにします。

    トピック例) /test

    aws
  1. デバイス側でターミナルを開き、下記コマンドを実行します。コマンド内の{"message": "test”}がメッセージとしてAWS IoT Coreに送信されます。

    $ mosquitto_pub -h an1.icgw.ntt.com -p 1883 -t /test -i [任意のclient-id] -m '{"message":"test"}'
    

  1. MQTTテストクライアントの画面に戻り、メッセージが受信されていることを確認します。

    aws

AWS IoT CoreからデバイスにMQTTでメッセージを受信する

  1. デバイス側でターミナルを開き、下記コマンドを実行します。ターミナルの画面は開いたままにします。

    $ mosquitto_sub -h an1.icgw.ntt.com -p 1883 -t /test -i [任意のclient-id]
    

  1. AWS IoT コンソール にアクセスし、サインインします。

    例) https://ap-northeast-1.console.aws.amazon.com/iot/home?region=ap-northeast-1#/home


  1. [MQTT テストクライアント]をクリックし、[トピックに公開する]をクリックします。

  1. [トピック名]にトピックを入力、[メッセージペイロード] に任意のメッセージを入力後、[発行]をクリックします。

    トピック例) /test

    メッセージペイロード例) {"message": "test”}

    aws
  2. デバイス側のターミナルに戻り、発行したメッセージが受信されていることを確認します。

    {"message":"test"}
    

  1. Control+Cを押下し、メッセージの受信を終了します。

デバイスからAWS IoT CoreにHTTPでメッセージを送信する

  1. AWS IoT コンソール にアクセスし、サインインします。

    例) https://ap-northeast-1.console.aws.amazon.com/iot/home?region=ap-northeast-1#/home


  1. [MQTT テストクライアント]をクリックし、[トピックをサブスクライブする]をクリックします。

  2. [トピックのフィルター]に、トピックを入力後、[サブスクライブ]をクリックし、このページを開いたままにします。

    aws

注釈

  • トピックのフィルターにはIoT Connect Gateway設定時の宛先Path、/topics/以降の宛先を使用します。
  • 例) /topics/test/の場合、test/をトピックのフィルターに使用する。

  1. デバイス側でターミナルを開き、下記コマンドを実行します。

    $ curl -XPOST "http://an1.icgw.ntt.com/[Path]" -d '{"message":"test"}' | jq
    

注釈

  • [Path]はIoT Connect Gatewayのエントリーポイントに設定したPathを使用します。例) /AWS_message_test
  • コマンド内の{"message": "test”}がメッセージとしてAWS IoT Coreに送信されます。

  1. MQTTテストクライアントの画面に戻り、メッセージが受信されていることを確認します。

    aws