仕事でAWS IOTを使って簡単なデモを作成しました。センサーから送信されたデータは、IOTからDynamoDBへ直接連携できる機能が用意されていたため、DynamoDBへ登録することにしました。今回はその手順を残しておきます。

手順(概要)

1.テーブル作成
2. AWS IOTの設定
3. 動作確認

1.テーブル作成

AWS IOT連携する場合はソートキーが必須になるのでソートキーも作成してください。

20160124160343

2.AWS IOTの設定

①thingの作成

AWS IOT上で管理するデバイスの名前を作成します。

20160121115311

②ruleの作成

IOTで受け取ったデータをどのように処理するかのルールを作成します。

20160124162649

Create a ruleをクリック

20160124164411

20160124164422

③証明書の取得

認証用の証明書を取得します

20160205233115

秘密鍵、証明書等をダウンロードします。
また使いたいSDKを選択し、「Confirm & start connect」を選択します。

20160205233131

以下のページが表示されSDKのダウンロードができます。

20160205234249

また、下記ページからroot証明書をダウンロードします。
https://www.symantec.com/content/en/us/enterprise/verisign/roots/VeriSign-Class%203-Public-Primary-Certification-Authority-G5.pem

3. 動作確認

動作確認はnodeで1回だけpublishするサンプルを作成しました。テストだけならaws cliでも確認可能です。
aws-iot-device-sdk-js/examples以下に適当な名前で下記プログラムを作成します。
また同じディレクトリにcertsディレクトリを作成し上記で取得した証明書を格納しておきます

const deviceModule   = require('..').device;
const cmdLineProcess = require('./lib/cmdline');

const device = deviceModule({
  keyPath: './certs/private.pem.key',
  certPath: './certs/certificate.pem.crt',
  caPath: './certs/root-CA.crt',
  clientId: '1',
  region: 'ap-northeast-1',
  reconnectPeriod:10
});

var thingName = 'iot_test'
device.subscribe(thingName);

var put_data = {};
var data = new Array();


// データ送信
var now = new Date();
var yyyymmdd = now.getFullYear()+
           ( "0"+( now.getMonth()+1 ) ).slice(-2)+
           ( "0"+now.getDate() ).slice(-2);

var hhmmss = ("0" + now.getHours()).slice(-2)  + ("0" + now.getMinutes()).slice(-2) + ("0" + now.getSeconds()).slice(-2) + ("00" + now.getMilliseconds()).slice(-3);
put_data = {
              date: yyyymmdd,
              time : hhmmss,
              value :Math.floor( Math.random() * 11 )
           };


device.publish(thingName, JSON.stringify(put_data));

console.log( JSON.stringify(put_data));
console.log( 'publish');

次のコマンドで実行します。

node put_data.js

publishしたデータ送信データが登録されましたね。

20160206000916

今回初めてDynamoDBを使ったのでよく分からず、IOTの設定のところでつまづきました。
また、ルール作成のところでPayload fieldにDynamoに登録したいフィールドを入力しましたが、
全項目が登録されてしまい特定のフィールドだけ選択して登録ということが出来ませんでした。ここはもう少し調べてみたいと思います。

元記事はこちら

AWS IOTでDynamoDBへ登録する【cloudpack 大阪 BLOG】