T.Memezawaをフォローする

AWS IoT サービスについて

インフラ

AWSセミナーで紹介のあったAWS IoTサービスについて気になったので、ブログでサービスの詳細について共有できればと思います。

AWS IoT定義

AWS IoT は、IoT デバイスを他のデバイスおよび AWS クラウドサービスに接続するクラウドサービスを提供します。

AWS IoT サービスは以下に分類されます。

  1. Data services
  2. Control services
  3. Device software

上記のうち以前のAWS Online Conferenceで紹介されていた以下のサービスのフォーカスして紹介したいと思います。
Control services:AWS ioT Core
Device software:AWS Iot GreenGrass

AWS IoT Core

デバイスとクラウドアプリケーションのやり取りを一元管理するためのマネージド型クラウドサービス

【機能】

  1. デバイスとAWSサービスの接続
  2. デバイスからのメッセージを処理して、データの変換やルーティングなどができる

【特徴】

  • インターネットに接続されていないデバイスでもハブ経由などで通信できる
  • ルールエンジンによってデバイスから送信されたデータを処理する(SNSプッシュ通知、DB・S3保存など)
    ※ルールエンジン:自動化する際に条件を判断してくれるソフトウェア

AWS IoT Coreの利用流れ

①ポリシー作成:アクションやリソースARNの権限設定などを行う
 ※リソースARN:AWSサービスのリソースを識別するための命名規則

②モノの作成(デバイスの登録):証明書の生成、Device Shadowなどを設定できる
 ※shadow:デバイスの状態のことで、Device shadowではデバイスの状態とAWSと同期するためのもの(greengrassでのデバイス状態管理にも使用)。

③以下のファイルをダウンロードしデバイスに転送する

  • 秘密鍵ファイル
  • 証明書ファイル
  • AmazonルートCA1ファイル
  • エンドポイント情報

④ライブラリインストール

npm install --save-dev node-dht-sensor //温度や湿度を読み取るためのモジュール
npm install --save-dev aws-iot-device-sdk //AWS IoTにアクセスするアプリケーションを作成するためのSDK

⑤実行ファイル(main.js)作成

// AWS IoT DeviceSDKの利用
 const awsIot = require('aws-iot-device-sdk');
 const sensor = require("node-dht-sensor");

// 秘密鍵、証明書などの設定
 const device = awsIot.device({
 keyPath: './ダウンロードした秘密鍵 '
 certPath: './ダウンロードした証明書 '
 caPath: '.ダウンロードしたルートCA '
 clientId: 'クライアント名'
 host: 'エンドポイント '
});


    let count = 0;
// 通信確立した後、5秒ごとに呼び出されるイベント
   device.on('connect', () => {
   console.log('接続中');
   setInterval(async () => {
   count++;
   const temps = 10; //今回はセンサーがないため固定
   const humids = count;
   const data = {
   temp: temps,
   humid: humids
      }
   device.publish('temp_1', JSON.stringify(data)); // temp_1 : topic名
   console.log(`$カウント数:{count} 回目`);
      }, 5000);
     });

⑥AWSコンソール側でMQTTクライアントを開き受信データを確認
 ※MQTT:IoTのための軽量な通信プロトコル

AWS IoT Greengrass

AWS IoTの機能をエッジ環境(現場)でも使えるするためのソフトウェアで、エッジ環境で実行することで負荷分散させることができる。

【機能】

クラウド上で行っていた処理をエッジ環境で実行させることができる

【特徴】

  • デバイスから収集したデータをクラウドを介さずに現場で処理できることで、応答性が高くクラウドと常時通信を行わないため通信コストが削減できる
  • エッジ環境のデータをクラウド上に上げて機械学習させ、修正されたモデルをデプロイする仕組みがある
  • Amazon ECR(コンテナサービス)などを利用してDokcerコンテナでの管理もできる

AWS Iot greengrassの構成

  • Greengrass Core:IoTデバイスにインストールするソフトウェア
  • Greengrass Service:Greengrass全体を管理するサービス

Greengrass Core特徴

・Greengrass Coreデバイス上でLambda関数を実行することが可能になり、簡単なデータ処理が可能
・デバイスシャドウ・サブスクリプション(AWS IoT Coreと類似した機能)

Greengrass Service特徴

デプロイ:デバイス上のLambda関数のアップデートを行う機能

  • ルーティング:データの送受信先先の機能を設定可能(AWS IoT Coreと類似)

その他の特徴

  • github上でオープンソース化されている
  • Greengrass CLIでの操作が可能

AWS IoT grassgreen 利用手順
ソフトウェアのインストールなどは上記を参考に実施(ガイド通りのため割愛します・・)

今後の取り組みたいこと

  • 温度センサーとラズパイを使用してgreenglassに触ってみる
  • Cloud Watchを使用してGreengrassのログ管理を学習する
  • Lambdaを使用した構成に触れる

AWS IoT Core
ルールエンジン
AWS IoT greengrass
AWS IoT Coreよくある質問
AWS IoT greengrassよくある質問
AWS IoT Core シャドウ機能