7. AWS IoTの設定

本章のゴール: AWS IoTでMQTT(AWS IoT上のテストサイト)による受信ができることを確認する

作業の位置づけ;

_images/bx1_05_overview.png

7.1. 概要

AWS IoTの設定は若干ステップが多いため、まずステップの概要を確認します

  1. ポリシの作成
  2. “モノ” の作成
  3. 証明書の作成, ポリシの割り当て, “モノ”の割り当て
  4. ルールの作成

7.2. ポリシの作成

“モノ” が AWS IoTにアクセスする際の制限を設定することができます

今回はフルコントロールとします

7.2.1. 作業

  1. AWS IoTのコンソールから “Create a resource” をクリックし “Create a policy” をクリック
  2. 下記を入力したら “Add statement” をクリックし “Create” をクリック
Name jawsdays2016_awsiot_policy
Action iot:*
Resource テキストボックスに * を入力、Allowにチェック

これでポリシが作成されました

※下図は “Add statement” 直前の画面です

_images/bx1_05_create_policy.png

7.3. “モノ” の作成

AWS IoT上で “モノ” として認識できるようにします

実物の “モノ” の状態を管理するための機能であるDevice shadowを使用する際に、特に必要となります

7.3.1. 作業

  1. AWS IoTのコンソールから “Create a thing” をクリック
  2. 下記を入力したら “Create” をクリック
Name jawsdays2016_awsiot_thing0

これで “モノ” が作成されました

7.4. 証明書の作成, ポリシの割り当て, “モノ”の割り当て

“モノ” がAWS IoTにアクセスする際に使用する証明書(キーペア)を作成します

“モノ” に公開鍵を持たせてAWS IoTにアクセスすることで認証としています

証明書は有効(活動中)/無効(非活動)というステータスを持っており、証明書が有効だとしても非活動の場合はAWS IoTへのアクセスができないといった制御が可能です

また、この証明書にポリシと “モノ” を割り当てることで、その証明書を持っている “モノ” の制限をすることができるという仕組みです

すでに存在するキーペアから作成することも可能ですが、今回はAWS IoTに発行してもらいます

注釈

AWS IoT接続トラブルの原因の80%が、証明書に起因するものですので丁寧に実施してください

7.4.1. 作業

  • 証明書の作成
    1. AWS IoTのコンソールから “Create a certiicate” をクリック
    2. “1-CLick certificate create” をクリック <”INACTIVE” と書かれた証明書が作成されます>
    3. 画面上の “Download private key” と “Download certificate” をクリックし、それぞれ .pem.key ファイルと .pem.crt ファイルを取得する

警告

  • private keyファイルはこのタイミングでのみダウンロード可能です。あとでダウンロードできないので、必ず取得してください
  • certifiateファイルはAWS IoTの別の画面から、public keyファイルはprivate keyファイルから再作成・入手が可能ですが割愛します
  • ポリシを証明書に割り当て
    1. 証明書のチェックボックスをクリック (ついていれば次へ)
    2. [Actions]の中から[Attach a policy]をクリック
    3. Policy name にポリシ名 jawsdays2016_awsiot_policy を入力し “Attach” をクリック
  • “モノ” を証明書に割り当て
    1. 証明書のチェックボックスをクリック (ついていれば次へ)
    2. [Actions]の中から[Attach a thing]をクリック
    3. Thing name にポリシ名 jawsdays2016_awsiot_thing0 を入力し “Attach” をクリック
  • 証明書のアクティベート
    1. 証明書のチェックボックスをクリック (ついていれば次へ)
    2. [Actions]の中から[Activate]をクリック <証明書が “ACTIVE” に変化します>

※下図は 証明書にチェックを入れた後 “Actions” をクリックした直後の画面です

_images/bx1_05_create_certificate.png

7.5. ルールの作成

AWS IoTでは、MQTTやRESTで送信されてきたデータに対して、どのようにアクションするか設定でき、これをルールと呼びます

7.5.1. 作業

  1. AWS IoTのコンソールから “Create a rule” をクリック
  2. 下記を入力したら “Add action” をクリックし “Create” をクリック
Name jawsdays2016_awsiot_rule0
Description jawsdays2016_awsiot_rule0
Attribute *
Topic filter jawsdays2016/sensor0
Condition <なにも入力しません>
Choosen an action Lambda
Function name jawsdays20160312_to_es

これでルールが作成されました

※下図は “Add action” 直前の画面です

_images/bx1_05_create_rule.png

7.6. AWS IoT上のMQTTクライアントツールを使用した確認

AWS IoTにはMQTTクライアントツールがあり、それを使って簡単に動作確認をすることができます

7.6.1. 作業

  1. AWS IoTコンソールの右上 “MQTT Client” をクリック
  2. “Generate client ID” をクリック <Client IDに任意の文字列が入ります>
  3. “Connect” をクリック
  4. “Publish to topic” をクリック
  5. 下記を入力して “Publish” をクリック
Publish topic jawsdays2016/sensor0
Payload {"state":{"reported":{"deviceId":"awsiot-test0","field1":3,"field2":"from aws iot"}}}
_images/bx1_05_awsiot_mqtt_client.png

Kibana上に上記payloadのデータが入っていれば成功です

_images/bx1_05_kibana.png

ここまで到達できればゴールです

BX1とAWS IoTの接続 へ進む

7.7. トラブルシュート

7.7.1. AWS IoTのログ

CloudWatchで確認することができます

_images/bx1_05_cloudwatch.png

CertificateファイルやPrivate keyファイルのダウンロードを忘れg AWS IoT上で証明書を作成しなおしてください

7.7.2. AWS IoTの証明書が削除できない

証明書にポリシや “モノ” が割り当て済みです

  1. 証明書をクリック
  2. 右側に現れたウィンドウの [Detail] で “dettach” します
  3. 改めて削除します

7.7.3. Rule作成時に Lambda で作ったファンクションが見当たらない

リージョンを確認してください

AWS IoTとAWS Lambdaのリージョンは一致している必要があります