プラットフォーム概要¶
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クラウド上で動作するクラウドアプリケーションなどのリソースを管理している基盤となっており、実行基盤から登録・取得が行われます。
項目名 |
説明 |
---|---|
DynamoDB |
アプリケーション情報など、共通で使用されるMy-IoTのデータが格納されています |
API Gateway |
実行基盤からアクセスする際のインターフェースを提供します |
Cognito |
実行基盤からアクセスする際のユーザー認証を行います |
Lambda |
実行基盤からアクセスする際に使用するAPIの処理などの、My-IoTの各ロジックを実行します |
S3 |
アプリケーションなど、My-IoTクラウドのリソースが格納されています |
SNS |
各実行基盤へ通知を行います |
各サービスの詳細は、 AWSのドキュメント を参照してください。
実行基盤¶
実行基盤とは、My-IoTコンソーシアム会員ごとに管理されるエッジなどのデータや機能、My-IoTを利用するためのWebアプリケーションであるIoTストアを提供する基盤です。
エッジの情報やエッジから送信されたデータの管理、エッジアプリケーションの配信などの機能やクラウドアプリケーションの実行環境などを提供する基盤です。
共通基盤にあるリソースには、各実行基盤からアクセスして利用することができます。
項目名 |
説明 |
---|---|
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データストア)などのリソースはテナント間で共有していますが、格納されているデータはテナントごとに分離して管理されており、テナント間で参照することは不可能となっています。
開発者が登録して公開したエッジアプリケーション、エッジプログラムケーション、クラウドアプリケーションなどは共通基盤に登録・公開され、誰でも利用可能となります。