プラットフォーム概要

My-IoTプラットフォーム

My-IoTは、バックエンドとしてAmazonによって提供されているクラウドサービスであるAmazon Web Services(AWS)を利用しており、My-IoTの機能は、AWSの各サービスを利用して構築されています。

My-IoTは、共通的なリソースや機能を提供する共通基盤と、My-IoTコンソーシアム会員ごとに使用するリソースを管理したり実行する実行基盤の二つに分かれて構成されています。 実行基盤は、My-IoTコンソーシアム会員がAWS Cloud Development Kit (CDK)を使用して構築する必要があります。

ここでは、共通基盤と実行基盤を含めたMy-IoTプラットフォームの概要について説明します。

共通基盤

共通基盤とは、各実行基盤からアクセスされることで共通的なリソースや機能を提供する基盤です。
My-IoTエッジ上で動作するアプリケーションであるエッジアプリケーションや、My-IoTクラウド上で動作するクラウドアプリケーションなどのリソースを管理している基盤となっており、実行基盤から登録・取得が行われます。

common_platform

項目名

説明

DynamoDB

アプリケーション情報など、共通で使用されるMy-IoTのデータが格納されています

API Gateway

実行基盤からアクセスする際のインターフェースを提供します

Cognito

実行基盤からアクセスする際のユーザー認証を行います

Lambda

実行基盤からアクセスする際に使用するAPIの処理などの、My-IoTの各ロジックを実行します

S3

アプリケーションなど、My-IoTクラウドのリソースが格納されています

SNS

各実行基盤へ通知を行います

各サービスの詳細は、 AWSのドキュメント を参照してください。

実行基盤

実行基盤とは、My-IoTコンソーシアム会員ごとに管理されるエッジなどのデータや機能、My-IoTを利用するためのWebアプリケーションであるIoTストアを提供する基盤です。

エッジの情報やエッジから送信されたデータの管理、エッジアプリケーションの配信などの機能やクラウドアプリケーションの実行環境などを提供する基盤です。

共通基盤にあるリソースには、各実行基盤からアクセスして利用することができます。

exec_platform

項目名

説明

API Gateway

IoTストアへのアクセスするためのインターフェースを提供します

Cognito

IoTストアや、Webアプリへアクセスする際のユーザー認証を行います

IoT Core

My-IoTエッジの認証、プロビジョニング、My-IoTエッジとAWS間の通信を行うためのMQTTブローカーを提供します

Lambda

IoTストアのAPI処理やWebサーバー機能などの、IoTストアの各ロジックを実行を行います
開発者がクラウドアプリケーションとして開発したカスタムLambdaも実行基盤上で動作します

DynamoDB(管理用)

エッジ情報などのIoTストアを管理するためのデータが格納されています

DynamoDB(イベント用)

カスタムLambdaから登録されるイベントデータやカスタムLambdaから登録される一時保存データが格納されています。
開発者はカスタムLambdaからイベントを登録することで、イベントをトリガーとして他のカスタムLambdaを実行したり連携することができます。
また、カスタムLambdaで処理した結果の一時保存や読み出しを行うことができます。

DynamoDB(My-IoTデータストア)

My-IoTデータストアの役割を担っています
My-IoTエッジから送信されたセンサーデータやログデータが格納されています
構築する実行環境によって、OpenSearchかDynamoDBのいずれかのMy-IoTデータストアが構築されています

OpenSearch(My-IoTデータストア)

My-IoTデータストアの役割を担っています
My-IoTエッジから送信されたセンサーデータやログデータが格納されています
構築する実行環境によって、OpenSearchかDynamoDBのいずれかのMy-IoTデータストアが構築されています

S3

IoTストアのリソースや公開データファイルなど、My-IoTクラウドのリソースが格納されています

StepFunctions

Lambdaと連携してスケジュール動作をする際に使用されます

EventBridge

Lambdaと連携してスケジュール動作をする際に使用されます

SQS

共通基盤から通知を受け取るために使用されます

CloudFront

クラウドアプリケーションとして登録されたWebアプリのリソースファイルや、公開データファイルにアクセスする際に経由されます

Route53

クラウドアプリケーション開発時に使用することのできる、開発用プロキシアプリケーションからアクセスする際のドメインを提供します

WAF

公開データファイルにアクセスする際に、アクセス元を制限する役割を担っています

My-IoTクラウドでは、My-IoTエッジとの接続や認証、データのやり取りはIoT Coreを介して行い、IoTストアへのリクエストはAPI Gatewayを介して行います。
いずれもLambdaで各処理が行われ、Lambdaからセンサーデータが格納されているOpenSearchやDynamoDB、エッジ情報などのシステムデータが格納されているDynamoDB、Webサイトのリソースなどが格納されているS3にアクセスが行われます。
開発者はカスタムLambdaを用いて、My-IoTクラウド上で動作するクラウドアプリケーションを開発することができます。

My-IoTエッジはOSにLinuxが搭載されており、エッジアプリケーションのインストールやエッジ情報の送信などのMy-IoTエッジを制御するための制御スクリプトと、フローベースドプログラミングツールであるNode-REDなどのコンポーネントで構成されています。
開発者はNode-REDフローを用いて、My-IoTエッジ上で動作するエッジアプリケーションを開発することができます。
制御スクリプトを介してインストールされたエッジアプリケーションは、Node-RED上で動作しセンサーとの通信や各種処理を行います。

開発者の登録したエッジアプリケーションやクラウドアプリケーションは共通基盤に登録され、各実行基盤から利用することができるようになります。

テナントとテナントID

My-IoTでは、実行基盤内のリソースを「テナント」という単位で管理しています。
テナントIDはテナントを識別するためのIDであり、サインアップしたMy-IoTアカウントやIoTストアに登録したMy-IoTエッジ、構築したIoTシステムなどのリソースはテナントに紐づけて管理されます。

利用者がインストールしたクラウドアプリケーションなどが利用するDynamo DBやOpenSearch(My-IoTデータストア)などのリソースはテナント間で共有していますが、格納されているデータはテナントごとに分離して管理されており、テナント間で参照することは不可能となっています。

開発者が登録して公開したエッジアプリケーション、エッジプログラムケーション、クラウドアプリケーションなどは共通基盤に登録・公開され、誰でも利用可能となります。