IoT デバイスシミュレーターを AWS で容易に開始する方法

2021-04-02
AWS ソリューション紹介

稲葉 智子

AWS ウェブサイトでは AWS ソリューション というページがあり、AWS サービスを使用して構築された 60 を超える多数のソリューションが公開されています。今回は、この多数のソリューションの中から、これまでインターネットに接続されていなかったモノ (例: センサー機器、駆動装置 (アクチュエーター) 、住宅・建物、車、家電製品、電子機器) が、ネットワークを通じてサーバーやクラウドサービスに接続され、相互に情報交換できる IoT (Internet of Things – モノのインターネット) の仕組み使用した「IoT デバイスシミュレーター」ソリューションをご紹介します。

この ソリューションの ランディングページ では次のものが提供されています。

概要とよくある質問

アーキテクチャ図

ソースコード (GitHub)

AWS CloudFormation テンプレート (自動デプロイ用)

実装ガイド (PDF)

ソリューションに関するリソースが 1 か所にまとめられているので、必要なものがすぐ揃うようにページが構成されています。このページの下部にはみなさんにこのソリューションを評価していただけるよう、「はい / いいえ」で回答できるボタンもあります。

それでは、「IoT デバイスシミュレーター」がどんなソリューションなのか見ていきましょう。

ご注意

本記事で紹介する AWS サービスを起動する際には、料金がかかります。builders.flash メールメンバー特典の、クラウドレシピ向けクレジットコードプレゼントの入手をお勧めします。

*ハンズオン記事およびソースコードにおける免責事項 »


「IoT デバイスシミュレーター」ソリューションとは ?

「IoT デバイスシミュレーター」は、AWS クラウド上で AWS サービスを使用して、IoT アプリケーションやデバイス、IoT バックエンドサービスをより簡単にテストしたい方向けに提供しているソリューションです。

物理的に接続するデバイスなどを大量に用意したり、時間のかかるスクリプトを開発したりすることなく、このソリューションで提供しているウェブベースのグラフィカルユーザーインターフェイス (GUI) コンソールを使用して、何百もの仮想接続デバイスを作成してシミュレーションすることができます。

クリックすると再生します

このソリューションは、主に、ハードウェアの量産化の際にクラウド側の動作検証を行う目的で、次のようなケースにご利用いただけます。

<主な使用例>

  • ハードウェアが開発中で実際のデバイスが利用できない期間に、クラウド側のアプリケーションを開発したい場合
  • 本番に近い台数規模で、アプリケーションが適切に動作することを確認したい場合
  • 故障しているデバイスのシミュレーションを行い、故障を検知することを確認したい場合

使用している AWS サービスは ?

「IoT デバイスシミュレーター」ソリューションでは、主に次の AWS サービスを組み合わせて構築されています。(この記事の公開時点で、次のサービスは東京リージョンでご利用可能です)

<IoTデバイスシミュレーターコンソール (WebベースのGUI) >

サービス名

用途

Amazon CloudFront

コンソールをホストしているバケットへのアクセスを制限します。

Amazon Simple Storage Service

バケットにコンソールのコンテンツを格納します。

 

<IoT デバイスシミュレーター機能>

サービス名

用途

Amazon API Gateway

デバイスシミュレータ API でマイクロサービス (AWS Lambda 関数) を呼び出します。

AWS Lambda

管理者、メトリクス、デバイス、プロファイルのマイクロサービスを起動します。

Amazon DynamoDB

デバイス、デバイスタイプ、設定、メトリクスのメタデータを保持します。

Amazon Simple Queue Service

デバイスシミュレーションリクエストを受信します。

Amazon Simple Storage Service

シミュレーションのメトリクスを保存します。

AWS IoT Core

仮想デバイスを使用してシミュレートされたデータを受信します。

AWS Fargate

Amazon Elastic Container Service に含まれるシミュレーションエンジンを使用して仮想デバイスを起動します。

Amazon CloudWatch Logs

レイテンシー、エラー率など、ログを記録します。

Amazon Cognito

ユーザープールを使用してコンソールとデバイスシミュレーター API へのアクセスを制限します。

AWS Identity and Access Management

ユーザーやIAMロールを管理します。

注意 : このソリューションの実行中に使用した AWS サービスのコストは、お客様の負担となります。ご自身でデプロイされる場合は、ご了承のうえ、ご利用ください。コストに関する詳細は、上記 AWS サービスの製品ページにある各「料金」ページでご確認いただけます。


AWS CloudFormation テンプレートの入手

このソリューションは、テンプレート (iot-device-simulator.template) により約 10 分程度でお客様の AWS アカウントに構築可能です。このテンプレートは、次の 2 つの方法で入手できます。

<ランディングページから入手してデプロイする場合>
ランディングページ内にはこちらの図のような情報が記載されています。「CloudFormation テンプレート」、「AWS コンソールで起動する」、「AWS IQ エキスパートでデプロイする」からお好きなデプロイ方法を選択できます。

ランディングページから入手してデプロイする場合は、「CloudFormation テンプレート」または「AWS コンソールで起動する」をご選択ください。

img_iot-device-simulator_01

<実装ガイドから入手してデプロイする場合>
実装ガイド内の「スタックを起動する」セクションにある「ソリューションの起動」ボタンからテンプレートを起動できます。

img_iot-device-simulator_02

上記の方法を使用する場合は、事前に AWS アカウントにログインしておくと、AWS CloudFormation コンソールのスタック作成用の画面が自動で開くので便利です。テンプレートをお手元にダウンロードした場合は、手動で AWS CloudFormation コンソールからスタックの作成を行い、ダウンロードしたテンプレートを指定してください。


AWS CloudFormation テンプレートで自動デプロイ

前述のいずれかの方法でテンプレートを入手したら、AWS CloudFormation でスタックを作成します。スタックの作成画面に表示される設定項目の詳細な説明は実装ガイドに記載されていますので、ご自身でこのソリューションをデプロイする場合は、実装ガイド を参照しながら設定してください。また、「IoT デバイスシミュレーター」ソリューションでは次の項目が入力必須のため、事前に入力内容を準備しておくと良いです。

  • スタックの名前 (ご自身が後で判別つきやすい、任意の名前を設定できます)
  • Administrator name (管理者の名前)
  • Administrator email address (管理者のEメールアドレス)

上記以外の項目をデフォルト設定のままでスタックを作成すると、約 10 分程度でデプロイが完了します。

デプロイ完了後は、AWS CloudFormation コンソールの「スタック」一覧で、このソリューションのスタック名をクリックすると次の詳細画面が表示されます。

img_iot-device-simulator_03

クリックすると拡大します

この詳細画面は、7 つのタブ (スタックの情報、イベント、リソース、出力、パラメータ、テンプレート、変更セット) に情報が分けられています。このソリューションでデプロイした設定情報をそれぞれのタブで確認していただけるようになっています。

補足 : AWS CloudFormation テンプレートを使用してデプロイしているので、このソリューションが不要になった場合は、AWS CloudFormationコンソールで該当スタックを削除するだけで、このソリューションで使用している全てのリソースを削除できます。


IoT デバイスシミュレーターコンソールを起動してみよう!

このソリューションでは、IoT デバイスシミュレーター専用のコンソールが用意されています。AWS CloudFormation でスタックを作成した時に登録した管理者用の E メールアドレス宛にアクセス時に必要となる ID、パスワード、IoT デバイスシミュレーター専用のコンソール URL が記載された E メールが届きます。この URL は、このソリューション用スタックの詳細ページにある「出力」タブの一覧に「ManagementConsole」と表記されているキー項目の右横に値としても表示されています。URL をクリックすると、次のログイン画面が表示されます。(IoT デバイスシミュレーター専用のコンソール UI は英語版のみです)

下記 2 つを使用して初回ログインします。

  • Your email : 管理者用の E メールアドレス (スタック作成時に入力したもの)
  • Your password : パスワード (管理者用の E メールアドレス宛に送信されたメール内に記載のもの)

Sign in」ボタンをクリックすると、パスワードリセットのページに遷移しますので、ご自身で覚えやすいパスワードに変更してください。

注意 : パスワードリセット画面で E メールアドレスとパスワードを入力した時にエラーが表示された場合は、「Your email」の欄に管理者用の E メールアドレス宛に送信されたメール内に記載されている「ID」 (「@」と「.」が「_」(アンダーバー)に置き換えれているもの) を入力してください。

img_iot-device-simulator_04

クリックすると拡大します

パスワードリセットが完了し、ログインすると、次の画面が表示されます。

img_iot-device-simulator_05

クリックすると拡大します

このマネージメントコンソールは、大きく 3 つのカテゴリーに分かれており、それぞれ次のメニューが含まれています。

 

MY MENU
(メニュー)

Dashboard
(ダッシュボード)

実行したシミュレーションの数、実行したシミュレーション時間数、作成したさまざまなデバイスタイプの内訳を表示します。

My Devices
(デバイス)

自分が作成した仮想デバイスのステータスを表示します。

My Profile
(プロファイル)

ご自身のアカウント情報の閲覧やパスワード変更ができます。

MODULES
(モジュール)

Device Types
(デバイスタイプ)

各 IoT デバイスから送信されるデータを定義します。

Widgets
(ウィジェット)

デバイスタイプに対して仮想デバイス (ウィジェット) を作成し、シミュレーションの実行管理を行えます。

AUTOMOTIVE
(自動車モジュール)

事前定義されたデバイスタイプを使用して、車両からのテレメトリをシミュレーションします。

ADMINISTRATION
(管理)

Users
(ユーザー)

IoT デバイスシミュレーターコンソールを使用するユーザーを登録管理できます。管理者のみがユーザーを招待でき、EメールにてIDとパスワードを通知します。

Settings
(設定)

このコンソールに関する一般的な設定、シミュレーションエンジン、AUTOMOTIVEの設定などが行えます。

 

では、ここからは実装ガイドの手順にしたがって、「Device Types」の設定から見ていきたいと思います。まず、画面左側にあるメニューから「Device Types」を選択すると、デバイスビューのページが表示されるので、新規登録の場合は「+ Add Device Type」を、編集の場合は「Edit」を選択して、デバイスタイプと属性を登録または編集します。(図は新規登録時の画面です)

img_iot-device-simulator_06

クリックすると拡大します

新規登録の画面にはあらかじめデフォルト値が入力されている項目がありますが、ご自由にカスタマイズしていただけます。属性登録用のダイアログでは、「Attribute name」欄に自動的に大文字と小文字でランダムに生成された文字列が入力された状態で表示されますが、こちらもご自由にカスタマイズしていただけます。

<TIPS!>

デバイスタイプの登録画面にある「Data Topic」の項目値は、AWS IoT Core でトピックのサブスクライブ設定に使用しますので、このタイミングでメモしておくと便利です。

実際に、実装ガイドに記載されている気象観測のデバイスタイプ用の設定値と属性用の設置値を使用して登録すると、次の図のようになります。(登録の手順は、実装ガイドの「Step 2」を、気象観測の設定内容は「開始方法」以下のセクションを参照)

属性を登録すると、「Device Type」画面下部にペイロードのサンプルが表示されますので、どのような形式でメッセージが送信されるのか、ここで確認していただけるようになっています。

img_iot-device-simulator_07

クリックすると拡大します

では次に、「Widgets」の設定を見てみましょう。ここでは、「+ Add Widget」を選択して、「Create a widget」ダイアログでデバイスタイプとウィジェットの数を登録するだけです。この図では、気象観測用のデバイスタイプ (WeatherStation) に対してウィジェット (仮想デバイス) を 25 個で設定しています。(ウィジェットは、1 つのデバイスタイプにつき最大 100 個まで登録可能です)

img_iot-device-simulator_08

クリックすると拡大します

ウィジェットの作成を行うと同時に1回目のシミュレーションが実行されます。シミュレーションの実行が完了したら、ウィジェットのステータスが「Sleeping」になります。 (図参照)

img_iot-device-simulator_09

クリックすると拡大します

各ウィジェットは、右図のボタンでコントロールできるようになっています。「Start」ボタンを選択するとシミュレーションが実行され、「Delete」ボタンを選択すると該当ウィジェットを削除できます。また、デバイス名の左横にある「□」にチェックを入れて、いくつかまとめて実行することも可能です。

img_iot-device-simulator_10

「View」ボタンを選択すると、各ウィジェットの詳細 (シミュレーションの実行回数、実行ステータス、実行日時、作成日、更新日) を確認できます。(図参照)

img_iot-device-simulator_11

クリックすると拡大します

前述で登録した気象観測用のウィジェット 25 個のシミュレーションが完了すると、その結果が「Dashboard」と「My Devices」に図のように表示されます。

img_iot-device-simulator_12

クリックすると拡大します

img_iot-device-simulator_13

※このページの「View」ボタンを選択すると、前述の各ウィジェットの詳細画面 (Device Details) が表示されます。

クリックすると拡大します

IoT デバイスシミュレーター専用のコンソールでシミュレートされた各ウィジェットのデータ項目を確認するには、AWS IoT Core コンソールで「トピックをサブスクライブする」欄に前述でメモした「Data Topic」を入力します。すると、図のように「サブスクリプション」欄で AWS IoT Core でシミュレートされたデータを表示させることができます。(設定の詳細は、実装ガイド内の「AWS IoT コンソール」セクションを参照)

注意 : サブスクリプションを設定してもデータが表示されない場合は、IoT デバイスシミュレーター専用のコンソールに戻って、ウィジェットを「Start」し、ステータスが「Running」になっていることを確認してください。

img_iot-device-simulator_14

クリックすると拡大します

補足 : IoT デバイスシミュレーターでは、AWS IoT Core へのデータ送信に MQTT ではなく、HTTP プロトコルの Publish API を利用しています。これにより、このソリューションでは MQTT を利用した動作検証や MQTT でサブスクライブするデバイスのシミュレーションはできません。また、メッセージでは単純な Publish (発行) のみを使用しており、Shadow や Job などの機能もご利用いただけません。このソリューションの導入を検討する際には、これらの点にご留意ください。

このソリューションの付録として、自動車モジュール (AUTOMOTIVE) 用に事前設定されたデバイスタイプが用意されています。車両からのテレメトリデータのシミュレーションを行いたい場合は、実装ガイドの「付録 A」に設定方法が記載されていますので、そちらをご覧の上、IoT デバイスシミュレーターコンソールで設定してみてください。


ソリューションの削除

このソリューションが不要になり、削除したい場合は、AWS CloudFormation コンソールからこのソリューションのスタックを削除するだけで、簡単に削除できます。削除を行った後は、スタックの「イベント」タブに表示されるステータスに「DELETE_COMPLETE」が表示されていることを確認してください。

以上がこのソリューションで提供されている機能になります。


まとめ

「IoT デバイスシミュレーター」ソリューション、いかがでしたか ? テスト用のシミュレーターなので、IoT 系のアプリケーションやサービスのテスト時だけこのソリューションのスタックを使ってシミュレーターを設定し、テストが終わったらスタックを削除して不要なコストがかからないようにする、という使い方も良いかもしれませんね。これをきっかけに、このソリューションに少しでもご興味を持っていただけますと幸いです。

また、このソリューション以外にも、「AWS IoT 開発者ポータル」というサイトもご用意しております。こちらのサイトでは、IoT サービスの動画やワークショップなどの自己学習用のコンテンツや、IoT 関連の事例やイベントなどの情報が多数公開されています。こちらも合わせてご覧ください。

前述にあるようにこのソリューションをご自身の AWS アカウントにデプロイされる場合は、実装ガイドに記載の注意事項を必ずご一読していただき、ご納得のうえ、ご利用ください。このソリューションの実行中に使用された AWS サービスのコストはお客様負担になりますので、ご利用の際はご注意ください。


builders.flash メールメンバーへ登録することで
AWS のベストプラクティスを毎月無料でお試しいただけます

photo_inaba-tomoko

筆者紹介

稲葉 智子
アマゾン ウェブ サービス ジャパン合同会社
技術統括部 テクニカルライター

AWS クラウドのサービスに関しては入社と同時に勉強開始。好きな AWS サービスは、ローカリゼーションも担当しているので、Amazon Translate。AWS DeepRacer や AWS DeepComposer にも興味があります。趣味は習い事のハープとカフェ巡り。AWS では猫好きが多いのですが、私は犬好きで、ウェルシュ・コーギー・ペンブローク Lover です。

メンバー登録で毎月抽選で無料クーポンを入手できます

さらに最新記事・デベロッパー向けイベントを検索

AWS を無料でお試しいただけます

AWS 無料利用枠の詳細はこちら ≫
5 ステップでアカウント作成できます
無料サインアップ ≫
ご不明な点がおありですか?
日本担当チームへ相談する