AWS IoT ハンズオン ~基本編~

イントロダクション

ハンズオンシナリオ

シナリオ1: センサーデータの送信

EdisonからAWS IoTのトピックに照度センサーのデータを送信し、AWS IoTでルールに基づきNoSQLデータベースDynamoDBへの保存を行います。また、しきい値を下回った場合、E-mailでアラートを送信するようにルールを設定します。本ハンズオンにより、センサーからのデータ取得および時系列データの保存、しきい値に対するアクションの手順を確認することができます。

_images/senario1.png

シナリオ2: アプリケーションからLEDをリモート制御

WebアプリケーションからEdisonに接続されたLEDの点灯/消灯の操作を行います。EdisonはAWS IoTのShadowのMQTTトピックをSubscribeしており、アプリケーションはShadowにコマンドを送信することでEdison側ではリアルタイムにコマンドを受信することができます。

_images/senario2.png

利用するデバイス、アプリケーション、サービス

インテルEdison

インテル社が提供する開発用のシングルボードコンピュータです。本ハンズオンではセンサーからのデータ取得、AWS IoTへのデータ送信に利用します。
http://www.intel.co.jp/content/www/jp/ja/do-it-yourself/edison.html

Groveスターターキット

Aruduinoなどの開発用ボードに接続可能なセンサーやケーブルが同梱されたキット。本ハンズオンではスターターキットの中のセンサーを選んでIntel Edisonに接続し、センサーデータを取得します。
http://www.seeedstudio.com/document/Grove%20Starter%20Kit.pdf http://www.seeedstudio.com/wiki/GROVE_System

AWSアカウント

AWSコマンドラインでiotおよびiot-dataを実行できるようにご利用のPCの設定をお願いします。 インストールの手順はこちらのとおりです。


AWS IoT

接続されたデバイスが安全かつ簡単にクラウドアプリケーションやその他のデバイスとやりとりするためのマネージド型プラットフォームです。本ハンズオンではデバイスからのデータ受信、デバイスのリモート制御などで利用します。
https://aws.amazon.com/jp/iot/

Amazon DynamoDB

マネージド型のNoSQLサービスで、高速で予測可能なパフォーマンスとシームレスな拡張性が特長です。本ハンズオンでは照度センサーで測定したデータを格納する時系列データベースとして利用します。


Amazon CloudWatch

AWSクラウドリソースとAWSで実行するアプリケーションのモニタリングサービスです。メトリクスの収集、ログファイルの収集が可能です。本ハンズオンではCloudWatch Logsを利用してAWS IoTのログを収集、閲覧します。

インテルEdisonの設定

インテルEdisonの準備を行います。

センサーの接続

Grove Kitの中から照度センサーとLED、LCDを取出してください。


照度センサーはこちらです。(LIGHTと書いてあります)

_images/2-illuminance-1.png

LEDは組み立て式となります。袋からLEDを取り出してボードに装着します。ピンが長い方が+となります。

_images/2-led-1.png _images/2-led-2.png

LCDはこちらです。

_images/2-lcd-1.png

次に、Arduino互換ボードをEdisonに装着します。(Arduino互換ボードの図)

_images/2-arduino-1.png _images/2-arduino-2.png

Arduino互換ボードにセンサーとLED、LCDを接続します。以下のように接続してください。


ポート 設定
A0 照度センサー
D8 LED
I2C LCD

_images/2-edison-1.png

シリアルポート接続

Edisonへ接続します。まず、Edisonにシリアルポート経由で接続します。USBケーブルでPCとEdisonを接続し、シリアルコンソールを開きます。

Windowsの場合

USBケーブルとACアダプタを図のように接続してください。

_images/usb-win.png

MacOSの場合

USBケーブル2本を図のように接続してください。

_images/usb-mac.png

ターミナルソフトでEdisonに接続してください。接続に必要な情報はこちらです。特にBaud Rateにご注意ください!

設定 設定項目
Port Edisonが接続されているUSBポート(Macであれば/dev/cu.usbserial-xxxx[FTDI])
Baud Rate 115200
Data Bits 8
Stop Bits 1
Parity none

Teratermをご利用の場合、メニューの[設定]-[シリアルポート]からスピードを”115200”に変更するのを忘れないでください。

MacOSをご利用の場合は、ターミナルから以下のコマンドを入力することで接続が可能です。

$ sudo screen /dev/tty.usbserial-XXXXXXX 115200

または、

$ sudo cu -s 115200 -l /dev/tty.usbserial-XXXXXXX
Password: ← Macのユーザパスワードを入力

プロンプトが表示されれば接続成功です。loginのプロンプトで、ユーザ名”root”、パスワード”Password1”でログインしてください。

edison login: root
Password: ******** ←パスワードを入力
root@edison1: ~#

WiFi設定

WiFiの設定を行います。ログイン後、configure_edison –wifi コマンドでSSIDとパスワードの設定を実施してください。

root@edison1: ~# configure_edison --wifi

Configre Edison: WiFi Connection

Scanning: 8 seconds left..
1. Exit WiFi setup
2. Manually input a hidden SSID
3. Guest
4. xxxxxxxxx

Enter 0 to rescan for networks.
Enter 1 to exit.
Enter 2 to input a hidden network SSID.
Enter a number between 3 to N to choose one of the listed network SSIDs: ←Guestが表示されている番号を入力

Is Guest corrrect? [Y or N]: ←Yを入力

What is the network password?: ←WiFiのパスワードを入力
Initiating connection to Guest. Please wait...
Attempting to enable network access, please check 'wpa_cli status' after a minute to confirm.
Done. Please connect your laptop or PC to the same network as this device and go to http://x.x.x.x or http://edison.local in your browser.
(Doneが出力されたら成功)

ハンズオン準備

ハンズオンを始めるにあたり、事前の準備設定を行います。AWSマネージメン トコンソールにログインし、東京リージョン を選択してください。

ハンズオン用CloudFormationのスタック作成

ハンズオンで利用するIAMユーザ、DynamoDBテーブルを作成を自動化するために、CloudFormationのスタックを作成します。IAMユーザはedisonの証明書を作成するための権限を与えるために作成します。また、DynamoDBテーブルはシナリオ1のセンサーデータの保存用のテーブルとなります。


マネージメントコンソールのAWSサービスで”CloudFormation”と入力しCloudFormationを選択します。

_images/3-cf-1.png

“Choose a template”から”Specify an Amazon S3 template URL”にチェックを入れ、以下のパスを入力し、[Next]をクリックします。

https://s3-ap-northeast-1.amazonaws.com/awsiot-handson-jp/awsiothandson.template


_images/3-cf-2.png

“Stack Name”と”DynamoDBTableName”、”IAMUserName”に以下の値を入力し、 [Next]をクリックします。 (一つのAWSアカウントの複数のIAMユーザがいる場合、<任意の番号>は他のユー ザと被らないように設定してください)

項目 設定
Stack Name awsiot-handson-stack<任意の番号>
DynamoDBTableName awsiot-handson-table<任意の番号>
IAMUserName awsiot-handson-user<任意の番号>
_images/3-cf-3-1.png

“Options”で何も入力せずに[Next]をクリックします。

_images/3-cf-4.png

“Resource”の画面を下にスクロールし、”Capabilities”で”I acknowledge that this template...”にチェックを入れ、[Create]をクリックします。

_images/3-cf-5.png

Cloud Formationのスタックの一覧に自分が作成したスタックが表示されるのを確認します。Statusは”CREATE_IN_PROGRESS”から”CREATE_COMPLETE”になるのを確認します。

_images/3-cf-6-1.png

_images/3-cf-7-1.png

画面下の”Output”タブをクリックし、AccessKeyとSecretKeyが表示されていることを確認し、こちらの内容をメモ帳などにコピーしてください。

_images/3-cf-8.png

Edison用サンプルコードの準備

ハンズオンで利用するEdison用のサンプルコードのダウンロード、初期設定を行います。


Edison上で以下のコマンドを実行し、サンプルコードのダウンロード、zipファイルの解凍を行います。

root@edison:~# wget https://s3-ap-northeast-1.amazonaws.com/awsiot-handson-jp/awsiot-handson-fundamentals.zip

root@edison:~# unzip -q awsiot-handson-fundamentals.zip

証明書を取得するためのスクリプトの設定を行います。解凍したサンプルコードのawsiot-handson-fundamentals/certsディレクトリに移動し、config.jsonの先ほどコピーしたCloudFormationのOutputのAccessKey/SecretKeyを入力します。

root@edison:~# cd awsiot-handson-fundamentals/certs
root@edison:~/awsiot-handson-fundamentals/certs# vi config.json

{
  "accessKeyId": "<your access key>",        ←<your access key>にAccessKeyを入力
  "secretAccessKey": "<your secret key>",    ←<your secret key>にSecretKeyを入力
  "region": "ap-northeast-1"
}

証明書作成のスクリプトを実行します。certsディレクトリにはすでにプライ ベートキー(privatekey.pem)とCSR(cert.csr)が存在しており、CSRの内容を元 に証明書を作成しています。出力されるcertificateIdの英数字文字列をメモ 帳にコピーしてください。次章のAWS IoTの設定の中で証明書を特定するため に利用します。 他のIAMユーザが作成した証明書が特定できなくなってしま う恐れがあるため、必ずメモを取得してください

 root@edison:~/awsiot-handson-fundamentals/certs# node create_cert.js
 ~
 { certificateArn: 'arn:aws:iot:ap-northeast-1:xxxxxxxxxxxxxx:cert/<英数字文字列>',
certificateId: '<英数字文字列>',
~

証明書ファイル(cert.pem)がcertsディレクトリ内に存在することを確認します。

root@edison:~/awsiot-handson-fundamentals/certs# ls
cert.csr        config.json     node_modules    rootca.crt
cert.pem        create_cert.js  privatekey.pem

AWS IoT基本設定

デバイスの作成

AWSマネージメントコンソールへログインし、画面右上のメニューから東京リージョンを選択します。 AWSサービスから”IoT”と入力し、”AWS IoT”を選択します。

_images/4-servicemenu.png

dashboard画面が表示される場合は左側のメニューのRegistry内のThingsをクリックします。

_images/4-getstart.png

デバイス(Thing)を作成します。[Create]をクリックします。

_images/4-create-thing-1.png

Nameに”edison<任意の番号>”と入力し、[Create thing]をクリックします。 (デバイス名を他のIAMユーザと被らないように任意の番号を付与します。)

_images/4-create-thing-2.png

リソースの一覧で作成したデバイスが表示されます。[←]でThings画面に戻ります。

_images/4-thing-1.png

ポリシーの作成

デバイスに対して、AWS IoTの各種操作を許可するためのポリシーを作成しま す。メニューのSecurity内のPoliciesを選択し[Create]をクリックします。

_images/4-create-policy-1.png

フォームにそれぞれ以下のパラメータを入力し、[Create]をクリックします。 policy名は他のIAMユーザと被らないように任意の番号を付与してください。

項目
Name awsiot-handson-policy<任意の番号>
Action iot:*
Resource
  • (アスタリスク)

_images/4-create-policy-2.png

作成したポリシーが表示されます。[←]でPolicies画面に戻ります。

_images/4-policy-1.png

先ほど作成した証明書をポリシーに割当てます。メニューのSecurity内のCertificatesをクリックしてしてリスト中の証明書の右下のチェックボックスをチェックし、[Actions]-[Attach policy]をクリックしてください。(3章で証明書を作成したときのcertificateIdの証明書をリソースから選択してください。)

_images/4-attach-policy.png

“Attach policies to certificate(s)”の画面で、先ほど作成したポリシーを選択し、[Attach]をクリックします。

_images/4-attach-policy-2-1.png

次に、デバイスと証明書の関連付けを行います。[Actions]-[Attach thing] をクリックします。

_images/4-attach-thing.png

“Attach things to certificate(s)”画面でデバイスを選択し、[Attach]をクリックします。

_images/4-attach-thing-2-1.png

センサーデータの送信

Intel Edisonに接続された照度センサーのデータをAWSの各サービスにストアします。 EdisonはAWS IoTのトピックにデータをパブリッシュし、AWS IoTでルールに基づきDynamoDBへ保存します。使用するDynamoDBのテーブル”awsiot-handson-rawdata”は「3.ハンズオン準備」で作成したCloud Formationのスタックに含まれています。

_images/senario1.png

センサーデータは以下のJSONフォーマットとします。

{
  "timestamp": "2015-10-24T14:16:37.305Z", ←ISO8601形式
  "value": "300"                           ←アナログ値
}

AWS IoT ルールの作成

メニューのRulesをクリックし[Create]をクリックします。

_images/5-create-rule-1.png

スクリーンショットの赤枠で囲んだ部分について、以下の項目を入力します。 任意の番号の部分は他のユーザと被らない数字を入力してください。

設定項目
Name SaveToDynamoDB<任意の番号>
SQL Version 2016-03-23
Description 任意
Attribute *(アスタリスク)
Topic Filter edison/illuminance<任意の番号>

_images/5-create-rule-3-1.png _images/5-create-rule-3-2.png

[Add action]をクリックし、”Select an action”から”Insert a message into a DynamoDB table”を選択し、[Configure action]をクリックします。

_images/5-create-rule-4-1.png

_images/5-create-rule-4-2.png

以下の値を入力します。

設定項目
Table Name awsiot-handson-table<任意の番号>
Hash Key Value ${topic(2)}
Range Key Value ${timestamp()}
Write message data to this column value

_images/5-create-rule-4-3.png

AWS IoTからDynamoDBへデータをPutするためのRoleを作成します。 “Choose or create a role to grant AWS IoT access to the DynamoDB resource to perform this action.”で[Create a new role]をクリックし、ロール名として”AWSIoTHandsonDynamoDB”と入力し、再度[Create a new role]をクリックします。 これによって入力したロール名が選択できるようになるので、作成したロールを選択し、[Upate role]をクリックし、次に[Add action]をクリックします。

_images/5-create-rule-5.png

“DynamoDB Action”が追加されたことを確認したら、[Create rule]をクリックします。

_images/5-create-rule-6-1.png

ルールが作成されたことを確認します。

_images/5-create-rule-7-1.png

プログラムの実行

照度センサーから照度データを取得し、AWS IoTのメッセージブローカーへ送信するためのプログラムを実行します。サンプルプログラム内のawsiot-handson-fundamentals配下のsensorに移動し、プログラムを実行します。

root@edison:~awsiot-handson-fundamentals/sensor# node main.js  edison/illuminance<任意の番号>

Publish: {"timestamp":"2015-10-24T14:16:37.305Z","value":268}
Publish: {"timestamp":"2015-10-24T14:16:38.365Z","value":268}
Publish: {"timestamp":"2015-10-24T14:16:39.424Z","value":271}
Publish: {"timestamp":"2015-10-24T14:16:40.484Z","value":270}
Publish: {"timestamp":"2015-10-24T14:16:41.535Z","value":272}

DynamoDBのテーブルを確認し、データが格納されていることを確認してくださ い。マネージメントコンソールのトップ画面に戻り、DynamoDBを選択します。 画面左のメニューの”Tables”をクリックし、テーブル一覧から “awsiot-handson-table<任意の番号>”をクリックします。メイン画面上部の “Item”タブをクリックし、テーブルのデータを表示します。

_images/5-dynamodb-1-1.png

LEDのリモート制御

AWS CLIを実行し、Intel Edisonに接続されたLEDのON/OFFを行います。AWS IoTのShadowを利用してブラウザからEdisonのステータスの変更リクエストを送信し、Edisonは変更通知を元にLEDをOFF/ONします。また、完了後は最新のステータスをShadowにアップデートします。

_images/senario2.png

プログラムの実行

Edison上で以下のプログラムを実行します。

root@edison:~# cd ~/awsiot-handson-fundamentals/led
root@edison:~/awsiot-handson-fundamentals/led# node main.js edison<任意の番号>

マネージメントコンソールのAWS IoTを開き、メニューの”Registry” > “things” をクリックし、”edison<任 意の番号>”をクリックします。

左のメニュー画面から”Shadow”をクリックし、”Shadow document”の”Edit”をクリックして編集モードにします。


_images/6-led-1.png

”Shadow state:”に以下のJSONを入力してください。入力が終わったら”Save”をクリックします。クリック後、EdisonのLEDが点灯することを確認してください。

{
  "reported": {
    "led": "off"
  },
  "desired": {
    "led": "on"
  }
}

_images/6-led-2.png

“desired”内にある”led”アイテムの値をoff/onのように記述を変更することでLEDの消灯/点灯を行なうことができます。

その他の設定(オプション)

CloudWatch Logsの設定

AWS IoTのログはCloudWatch Logsで取得可能です。 詳細な手順はこちらに掲載されています。

http://docs.aws.amazon.com/ja_jp/iot/latest/developerguide/cloud-watch-logs.html

まず、メニュー画面から”Identity & Access Management”をクリックし、IAMの設定画面を表示します。画面左のメニューから”Roles”をクリックし、[Create New Role]をクリックします。

_images/7-logs-1.png

“Role Name”にロール名を入力し、[Next Step]をクリックします。

_images/7-logs-2.png

“Select Role Type”で”AWS IoT”の[Select]をクリックします。

_images/7-logs-3.png

“Attach Policy”で”AWSIoTLogging”のビルトインポリシーにチェックを入れ、[Next Step]をクリックします。

_images/7-logs-4.png

内容を確認します。次の手順のコマンドラインでARNが必要になるため、”Role ARN”の文字列をコピーしておきます。問題なければ[Create Role]をクリックしてください。

_images/7-logs-5.png

以下のaws cliコマンドを実行し、aws iotに作成したロールを割当てます。(以下のコマンドをコピーするとダブルクオーテーションが文字化けする場合がありますのでご注意ください。)

aws iot set-logging-options --region ap-northeast-1 --logging-options-payload roleArn=”arn:aws:iam::<your-aws-account-num>:role/awsiotlogging”,logLevel=”INFO”

マネージメントコンソールのサービスメニューから”CloudWatch”をクリックし、左メニューの[Logs]をクリックします。

_images/7-logs-6.png

一覧の”Log Groups”から”AWSIotLogs”が表示されていることを確認します。

_images/7-logs-7.png

AWSIotLogsをクリックし、”Log Streams”にログのエントリが存在することを確認します。それぞれのLog Streamsをクリックすることで、ログを閲覧することができます。

_images/7-logs-8.png

証明書の作成

本ハンズオンではあらかじめプライベートキーとCSR(Certificate Signing Request)を作成し、そちらを元に証明書を取得しています。プライベート鍵とCSRを作成する手順は以下のとおりです。

以下のopensslコマンドでプライベートキーを作成します。

$ openssl genrsa -out privatekey.pem 2048
Generating RSA private key, 2048 bit long modulus
................................................................................+++
..........+++e is 65537 (0x10001)

次に、作成したプライベートキーを元にCSRを作成します。

$ openssl req -new -key privatekey.pem -out cert.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:JP
State or Province Name (full name) [Some-State]:Tokyo
Locality Name (eg, city) []:Meguro
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Amazon Web Services Japan K.K.
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

ハンズオン終了後

ハンズオン終了後には以下の設定を削除してください。

AWS IoTのリソース削除

AWS IoTの証明書、ポリシー、デバイスを削除するためには、削除前にアタッチされているリソースをデタッチする必要があります。(ルールは他のリソースとの関連性はありません)

  • マネージメントコンソールのサービスから[AWS IoT]を選択します。
  • 削除したい証明書を選択します。
  • 関連付けられているデバイスを選択し、[Detach]をクリックします。
  • 同様にポリシーもデタッチします。
_images/8-detach-1.png

  • 削除したいリソースを選択し、”Actions”のメニューから”Delete”を選択します。

CloudFormationスタックの削除

  • マネージメントコンソールのサービス一覧から[CloudFormation]をクリックします。
  • リストから”AWSIoTHandsonStack”のスタックを選択し、”Actions”から[Delete Stack]をクリックします。
_images/8-delete-cf-stack-1.png

AWS IoT Device SDK解説

本ハンズオンで利用したサンプルコードを元に、AWS IoT Device SDKの解説をします。

シナリオ1の解説

シナリオ1ではTopic(edison/illuminance)向けに照度センサーのデータをMQTTを利用してPublishします。

まず、証明書のパスを指定し、プライベート鍵、証明書、ルート証明書のパスを指定します。

1
2
3
4
5
6
7
 var device = awsIot.device({
   keyPath: '../certs/privatekey.pem',
   certPath: '../certs/cert.pem',
   caPath: '../certs/rootca.crt',
   clientId: 'eison_pub_client',
   region: 'ap-northeast-1'
 });

メッセージブローカに接続します。1秒ごとにループを回し、照度センサーからのデータ取得、メッセージの整形、メッセージのPublishを行います。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
device.on('connect', function() {
   console.log('Connected to Message Broker.');

   setInterval(function() {

     // Retrieve sensor data
     var value = analogPin0.read();

     // Display sensed analog data on LCD
     myLCD.setColor(0, 255, 0);
     myLCD.setCursor(0,0);
     myLCD.write(clearStr);
     myLCD.setCursor(0,0);
     myLCD.write("DATA: " + value);

     // Compose records
     var record = {
         "timestamp": moment().toISOString(),   // ISO8601 format
         "value": value
     };

     // Serialize record to JSON format and publish a message
     var message = JSON.stringify(record);
     console.log("Publish: " + message);
     device.publish(topic, message);

   }, 1000);
});

シナリオ2の解説

シナリオ2ではShadowのdeltaトピックに対しSubscribeおよびupdateトピックに対しPublishを行っています。

まず、証明書のパスを指定し、プライベート鍵、証明書、ルート証明書のパスを指定します。

1
2
3
4
5
6
7
   var thingShadows = awsIot.thingShadow({
     keyPath: '/home/root/.node_app_slot/certs/privatekey.pem',
     certPath: '/home/root/.node_app_slot/certs/cert.pem',
     caPath: '/home/root/.node_app_slot/certs/rootca.crt',
     clientId: 'edison_shadow_client',
     region: 'ap-northeast-1'
  });

メッセージブローカに接続します。

1
2
3
4
5
6
  thingShadows
   .on('connect', function() {
     console.log('connected to awsiot.');
     thingShadows.register('edison');
     clientTokenUpdate = thingShadows.update('edison', defaultState);
   });

ステータスを監視します。

1
2
3
4
   thingShadows
   .on('status', function(thingName, stat, clientToken, stateObject) {
     console.log('received ' + stat + ' on ' + thingName + ': ' + JSON.stringify(stateObject));
   });

アプリケーションからdesiredステータスのアップデートがあった場合、deltaのトピックにメッセージがpublishされます。deltaをsubscribeすることで変更をリアルタイムに受信します。

1
2
3
4
5
   thingShadows
   .on('delta', function(thingName, stateObject) {
     console.log('received delta '+' on ' + thingName + ': ' + JSON.stringify(stateObject));
     updatedState = {"state":{"reported":{"led": ""}}};
   });

ステータスをチェックし、デバイス内でそれぞれのステータスに応じた処理を実行します。

1
2
3
4
5
6
7
8
9
   if (stateObject.state.led == 'on') {

   //ONの処理(LED点灯)

   } else {

   //OFFの処理(LED消灯)

   }

本書はAWS IoTおよびAWSの各サービスを利用してIoTの基本的なシステムを構築するためのハンズオン手順 について記述しております。

最新情報

-AWS IoTの説明資料を公開しました。 http://bit.ly/1SrHtGf

前提条件

  • インテルEdisonまたはRaspberry Piなどの機器で開発経験がある方
  • IoTを活用したアプリケーション構築をご検討されているデベロッパーの方
  • AWSクラウドを活用したシステム・アプリケーション開発に従事されている方
  • UNIXの基本的なコマンドの利用経験がある方

注意事項

  • AWSのサービス利用料金は受講者の方にご負担いただきますよう、ご了承ください。
  • ハンズオンに必要な機材は貸出品となりますので、終了後は必ず返却をお願いします。

事前準備

以下のURLから必要なドライバをダウンロードし、インストールをお願いします。

Windowsの場合

MacOSの場合

サンプルプログラム

本ハンズオンで利用するサンプルプログラムです。Edison上で利用します。

https://s3-ap-northeast-1.amazonaws.com/awsiot-handson-jp/awsiot-handson-fundamentals.zip

よくあるトラブル

AWS IoTのupdate shadow CLIを実行時にSSLエラーとなる

python 2.7.10にアップデート、AWS CLIの再インストールでOK。

ハッシュタグ

Twitterのハッシュタグはこちらになります。 #AWS_IoT_JP