2.12 AWS IoT Coreの設定¶
本チュートリアルでは下記利用を想定した設定方法とメッセージの送受信例を説明いたします。
・転送先クラウド:AWS
・認証:X.509
・IoT Connect Gateway:スタンダード機能
・プロトコル:MQTT→MQTTS、HTTP→HTTPS
AWS IoT の設定¶
AWS IoT コンソール にアクセスし、サインインします。
例) https://ap-northeast-1.console.aws.amazon.com/iot/home?region=ap-northeast-1#/home
[管理] → [すべてのデバイス] → [モノ] の順にクリックします。
[モノを作成] をクリックします。
[1つのモノを作成] を選択し、[次へ] をクリックします。
[モノの名前] に任意の名前を入力し、[次へ] をクリックします。
[新しい証明書を自動生成 (推奨)] を選択し、[次へ] をクリックします。
ここではポリシー未作成のため、ポリシーをアタッチせずに [モノを作成] をクリックします。
以下4つのファイルをダウンロードするために、対応する [ダウンロード] をクリックし、[完了] をクリックします。
下記証明書は、IoT Connect Gateway設定時に使用します。
・デバイス証明書:XXXXX-certificate.pem.crt
・パブリックキーファイル:XXXXX.public.pem.key
・プライベートキーファイル:XXXXX.private.pem.key
・Amazon ルート CA 1: AmazonRootCA1.pem
[管理] → [セキュリティ] → [ポリシー] → [ポリシーを作成] の順にクリックします。
各項目を設定します。
・[ポリシー名] : 任意の名前 例) PubSubToAnyTopic
・[ポリシー効果] : 「許可」
・[ポリシーアクション] : iot:Connect
・[ポリシーリソース] : *
[新しいステートメントを追加]をクリックし、以下の項目を追加します。
・[ポリシー効果] : 「許可」
・[ポリシーアクション] : iot:Publish,iot:Receive,iot:Subscribe
・[ポリシーリソース] : *
[作成]をクリックします。
[管理] → [セキュリティ] → [証明書] の順にクリックし、手順 8 でダウンロードしたデバイス証明書ファイル (XXXXX-certificate.pem.crt) のファイル名の先頭 (XXXXXの部分) をコピーして、[証明書を見つける] のサーチボックスに貼り付けます。
作成した証明証が表示されるので、証明書にチェックを入れて、[アクション] → [ポリシーをアタッチ] の順にクリックします。
[AWS IoT ポリシー を選択] をクリックし、手順 9 ~ 12 で作成したポリシー (例:PubSubToAnyTopic)にチェックを入れて、[ポリシーをアタッチ] をクリックします。
左ペインの[設定] をクリックし、[デバイスデータエンドポイント] の [エンドポイント] に表示されている内容をコピーします。
このエンドポイントは、IoT Connect Gateway設定時に使用します。
以上で AWS IoT へのモノの登録が完了となります。
IoT Connect Gatewayの設定¶
下記、ご利用クラウドの認証情報登録を参考に認証情報の設定をします。
https://sdpf.ntt.com/services/docs/icgw/tutorials/rsts/common/create_auth/index.html#id2
・クラウド : AWS
・証明書種別 : X.509
・認証名 : 任意の認証名
認証設定の下記赤枠にてAWS設定時にダウンロードした証明書をテキストエディタで開き、内容をコピーして貼り付けます。
- ・RSA秘密鍵
プライベートキーファイル XXXXX.private.pem.key
- ・証明書
デバイス証明書 XXXXX-certificate.pem.crt
- ・CA認証局
Amazon ルート CA 1 AmazonRootCA1.pem
- 下記を参考に設定をします。
「グループ」の作成
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でメッセージを送信する¶
AWS IoT コンソール にアクセスし、サインインします。
例) https://ap-northeast-1.console.aws.amazon.com/iot/home?region=ap-northeast-1#/home
[MQTT テストクライアント]をクリックし、[トピックをサブスクライブする]をクリックします。
[トピックのフィルター]に、トピックを入力後、[サブスクライブ]をクリックし、このページを開いたままにします。
トピック例) /test
デバイス側でターミナルを開き、下記コマンドを実行します。コマンド内の{"message": "test”}がメッセージとしてAWS IoT Coreに送信されます。
$ mosquitto_pub -h an1.icgw.ntt.com -p 1883 -t /test -i [任意のclient-id] -m '{"message":"test"}'
MQTTテストクライアントの画面に戻り、メッセージが受信されていることを確認します。
AWS IoT CoreからデバイスにMQTTでメッセージを受信する¶
デバイス側でターミナルを開き、下記コマンドを実行します。ターミナルの画面は開いたままにします。
$ mosquitto_sub -h an1.icgw.ntt.com -p 1883 -t /test -i [任意のclient-id]
AWS IoT コンソール にアクセスし、サインインします。
例) https://ap-northeast-1.console.aws.amazon.com/iot/home?region=ap-northeast-1#/home
- [MQTT テストクライアント]をクリックし、[トピックに公開する]をクリックします。
[トピック名]にトピックを入力、[メッセージペイロード] に任意のメッセージを入力後、[発行]をクリックします。
トピック例) /test
メッセージペイロード例) {"message": "test”}
デバイス側のターミナルに戻り、発行したメッセージが受信されていることを確認します。
{"message":"test"}
- Control+Cを押下し、メッセージの受信を終了します。
デバイスからAWS IoT CoreにHTTPでメッセージを送信する¶
AWS IoT コンソール にアクセスし、サインインします。
例) https://ap-northeast-1.console.aws.amazon.com/iot/home?region=ap-northeast-1#/home
[MQTT テストクライアント]をクリックし、[トピックをサブスクライブする]をクリックします。
[トピックのフィルター]に、トピックを入力後、[サブスクライブ]をクリックし、このページを開いたままにします。
注釈
- トピックのフィルターにはIoT Connect Gateway設定時の宛先Path、/topics/以降の宛先を使用します。
- 例) /topics/test/の場合、test/をトピックのフィルターに使用する。
デバイス側でターミナルを開き、下記コマンドを実行します。
$ 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に送信されます。
MQTTテストクライアントの画面に戻り、メッセージが受信されていることを確認します。