Webサイト制作コースのお申し込みはこちら Webサイト制作コースのお申し込みはこちら

AWS IoTについてまとめています。

AWS IoTとは

AWS IoTは、家庭や工場、商用のデバイスをクラウドに接続し、AWSと連携させるためのサービスです。具体的には、デバイスを接続する「デバイスソフトウェア」、デバイスを制御する「接続・コントロールサービス」、デバイスから収集したデータの「分析サービス」の3つから構成されています。

例えば、自動掃除機ルンバを販売するiRobotでは、ルンバ上に搭載されたAWS IoTデバイスウェアをAWSのサーバレスサービスLambdaをバックエンドとして連携させています。

【関連記事】
AWS Lambdaって何?サービス概要を初心者向けに解説

ルンバはクリスマスの贈り物として人気。プレゼントとして贈られたルンバは最初に使われるときにインターネット経由で一斉に通信をおこないます。結果として、通常時の20倍もの巨大なトラフィックの増加が発生しますが、AWSにてトラフィックのスパイクに柔軟に対応してくれるんですね。「贈り物イベント」ごとにサーバを増強したりサーバ側でパラメータを調整する必要がないということです。iRobotでは、AWS Lambda、AWS IoT Core、Amazon Kinesisといったサービスが使用されています。

AWS IoTの機能

デバイスソフトウェアとして、FreeRTOSとAWS IoT Greengrassが提供されています。FreeRTOSは、マイクロコントローラ用オペレーティング・システム。小型・低電力消費のエッジデバイスで、プログラミング、デプロイ、保護、接続、管理が可能になります。AWS IoT Greengrassは、デバイス上でローカルコンピューティング、メッセージング、データキャッシュ、同期、機械学習の推論といった機能を実行するソフトウェアです。

接続・コントロールサービスとして、AWS IoT Core、AWS IoT Device Defender、AWS IoT Device Managementが提供されています。AWS IoT Coreは、デバイスとクラウドアプリケーションやその他の通信を簡単・シンプルにおこなうためのミドルウェアです。AWS IoT Device Defenderは、IoTセットの継続的なモニタリングと監査をおこなうセキュリティチェック用のソフトウェアです。AWS IoT Device Managementはデバイス管理用のソフトウェア。大規模な IoT デバイスの登録、編成、モニタリング、リモート管理をおこなうことができるようになります。

分析サービスとして、AWS IoT Analytics、AWS IoT SiteWise、AWS IoT Events、AWS IoT Things Graphが提供されています。AWS IoT Analyticsは分析用ソフトウェア。IoTデータの準備をおこない、組み込みのSQLクエリエンジンにてIoTデータにクエリを発行・分析処理を行います。AWS IoT SiteWiseは、全てのIoTソースを監視し、一貫してデータを収集します。AWS IoT Eventsは、IoTからのイベントをハンドリングして処理をおこないます。AWS IoT Things Graphは、IoTアプリケーション構築のためのサービス。ワークフローを作成して、管理・モニタリングをおこないます。

AWS IoTの仕組み

IoTデバイスから収集されたデータをデータストアに蓄積し、分析者がクエリを発行するなどデータを操作することで、分析をおこないます。

関連)AWS IoTAnalyticsデータの視覚化-AWSIoT Analytics

AWS IoTで分析をおこなうための流れは、IoTデバイスのデータの送信先となる「チャネル」を作成し、送信されたデータのフィルタリングや加工をおこなう「パイプライン」を作成し、データストアにクエリを発行するという流れになります。AWS IoTの設定は、AWS CLIで操作が可能です。

【関連記事】
AWS CLIのインストール方法 AWSアクセスキーの登録と疎通確認

以下は、AWS CLIにてチャネルを作成する例です。

aws iotanalytics create-channel --channel-name mychannel

チャネルメッセージは、AmazonS3パケット、ユーザが管理するパケットのいずれかに保存できます。S3に保存する場合は、Amazon S3パケットでアクションを実行する権限を付与する必要があります。以下は、Amazon S3パケットの例です。s3:GetBucketLocation(バケットの場所を確認する)s3:PutObject(ストア)、s3:GetObject(読み取り)、 s3:ListBucket (再処理)を許可するという内容です。

{
    "Version": "2012-10-17",
    "Id": "MyPolicyID",
    "Statement": [
        {
            "Sid": "MyStatementSid",
            "Effect": "Allow",
            "Principal": {
                "Service": "iotanalytics.amazonaws.com"
            },
            "Action": [
                "s3:GetObject",
                "s3:GetBucketLocation",
                "s3:ListBucket",
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::my-iot-analytics-bucket",
                "arn:aws:s3:::my-iot-analytics-bucket/*"
            ]
        }
    ]
}

次に、チャネルに送信されたデータをフィルタリング・加工するパイプラインを作成します。以下は、チャネル「mychannel」に送信されたデータを、フィルタリングや加工なしでデータストア「mydatastore」に保存するパイプライン設定の例です。

{
    "pipelineName": "mypipeline",
    "pipelineActivities": [
        {
            "channel": {
                "name": "mychannelactivity",
                "channelName": "mychannel",
                "next": "mystoreactivity"
            }
        },
        {
            "datastore": {
                "name": "mystoreactivity",
                "datastoreName": "mydatastore"
            }
        }
    ]
}

関連)パイプラインの作成-AWSIoT Analytics

分析用のデータセットを作成します。データストアのデータは巨大すぎるので分析用に小さな単位にデータを切り分けるんですね。具体的には、クエリを使ってデータセットを作成します。以下は、select * でデータ全体をデータセットとするmydataset.jsonの例です。

{
    "datasetName": "mydataset",
    "actions": [
        {
            "actionName":"myaction",
            "queryAction": {
                "sqlQuery": "select * from mydatastore"
            }
        }
    ]
}

以下のAWSのコマンドを発行することで、データセットを作成します。

aws iotanalytics create-dataset-content --dataset-name mydataset

データセットにクエリを発行して分析をおこないます。

AWS IoTのまとめ

ポテパンダの一言メモ
  • AWS IoTは、IoT用のデバイス側ソフトウェアとクラウド側ソフトウェア
  • デバイスで収集したデータをデータストアに蓄積し、分析をおこなう
  • AWS IoTはマネージメントコンソールか、AWS CLIで設定・操作が可能

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。