IoT デバイスシミュレーターを 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 コンソールで起動する」をご選択ください。
<実装ガイドから入手してデプロイする場合>
実装ガイド内の「スタックを起動する」セクションにある「ソリューションの起動」ボタンからテンプレートを起動できます。
上記の方法を使用する場合は、事前に AWS アカウントにログインしておくと、AWS CloudFormation コンソールのスタック作成用の画面が自動で開くので便利です。テンプレートをお手元にダウンロードした場合は、手動で AWS CloudFormation コンソールからスタックの作成を行い、ダウンロードしたテンプレートを指定してください。
AWS CloudFormation テンプレートで自動デプロイ
前述のいずれかの方法でテンプレートを入手したら、AWS CloudFormation でスタックを作成します。スタックの作成画面に表示される設定項目の詳細な説明は実装ガイドに記載されていますので、ご自身でこのソリューションをデプロイする場合は、実装ガイド を参照しながら設定してください。また、「IoT デバイスシミュレーター」ソリューションでは次の項目が入力必須のため、事前に入力内容を準備しておくと良いです。
- スタックの名前 (ご自身が後で判別つきやすい、任意の名前を設定できます)
- Administrator name (管理者の名前)
- Administrator email address (管理者のEメールアドレス)
上記以外の項目をデフォルト設定のままでスタックを作成すると、約 10 分程度でデプロイが完了します。
デプロイ完了後は、AWS CloudFormation コンソールの「スタック」一覧で、このソリューションのスタック名をクリックすると次の詳細画面が表示されます。
クリックすると拡大します
この詳細画面は、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」 (「@」と「.」が「_」(アンダーバー)に置き換えれているもの) を入力してください。
クリックすると拡大します
パスワードリセットが完了し、ログインすると、次の画面が表示されます。
クリックすると拡大します
このマネージメントコンソールは、大きく 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」を選択して、デバイスタイプと属性を登録または編集します。(図は新規登録時の画面です)
クリックすると拡大します
新規登録の画面にはあらかじめデフォルト値が入力されている項目がありますが、ご自由にカスタマイズしていただけます。属性登録用のダイアログでは、「Attribute name」欄に自動的に大文字と小文字でランダムに生成された文字列が入力された状態で表示されますが、こちらもご自由にカスタマイズしていただけます。
<TIPS!>
デバイスタイプの登録画面にある「Data Topic」の項目値は、AWS IoT Core でトピックのサブスクライブ設定に使用しますので、このタイミングでメモしておくと便利です。
実際に、実装ガイドに記載されている気象観測のデバイスタイプ用の設定値と属性用の設置値を使用して登録すると、次の図のようになります。(登録の手順は、実装ガイドの「Step 2」を、気象観測の設定内容は「開始方法」以下のセクションを参照)
属性を登録すると、「Device Type」画面下部にペイロードのサンプルが表示されますので、どのような形式でメッセージが送信されるのか、ここで確認していただけるようになっています。
クリックすると拡大します
では次に、「Widgets」の設定を見てみましょう。ここでは、「+ Add Widget」を選択して、「Create a widget」ダイアログでデバイスタイプとウィジェットの数を登録するだけです。この図では、気象観測用のデバイスタイプ (WeatherStation) に対してウィジェット (仮想デバイス) を 25 個で設定しています。(ウィジェットは、1 つのデバイスタイプにつき最大 100 個まで登録可能です)
クリックすると拡大します
ウィジェットの作成を行うと同時に1回目のシミュレーションが実行されます。シミュレーションの実行が完了したら、ウィジェットのステータスが「Sleeping」になります。 (図参照)
クリックすると拡大します
各ウィジェットは、右図のボタンでコントロールできるようになっています。「Start」ボタンを選択するとシミュレーションが実行され、「Delete」ボタンを選択すると該当ウィジェットを削除できます。また、デバイス名の左横にある「□」にチェックを入れて、いくつかまとめて実行することも可能です。
「View」ボタンを選択すると、各ウィジェットの詳細 (シミュレーションの実行回数、実行ステータス、実行日時、作成日、更新日) を確認できます。(図参照)
クリックすると拡大します
前述で登録した気象観測用のウィジェット 25 個のシミュレーションが完了すると、その結果が「Dashboard」と「My Devices」に図のように表示されます。
クリックすると拡大します
※このページの「View」ボタンを選択すると、前述の各ウィジェットの詳細画面 (Device Details) が表示されます。
クリックすると拡大します
IoT デバイスシミュレーター専用のコンソールでシミュレートされた各ウィジェットのデータ項目を確認するには、AWS IoT Core コンソールで「トピックをサブスクライブする」欄に前述でメモした「Data Topic」を入力します。すると、図のように「サブスクリプション」欄で AWS IoT Core でシミュレートされたデータを表示させることができます。(設定の詳細は、実装ガイド内の「AWS IoT コンソール」セクションを参照)
注意 : サブスクリプションを設定してもデータが表示されない場合は、IoT デバイスシミュレーター専用のコンソールに戻って、ウィジェットを「Start」し、ステータスが「Running」になっていることを確認してください。
クリックすると拡大します
補足 : 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 サービスのコストはお客様負担になりますので、ご利用の際はご注意ください。
筆者紹介
稲葉 智子
アマゾン ウェブ サービス ジャパン合同会社
技術統括部 テクニカルライター
AWS クラウドのサービスに関しては入社と同時に勉強開始。好きな AWS サービスは、ローカリゼーションも担当しているので、Amazon Translate。AWS DeepRacer や AWS DeepComposer にも興味があります。趣味は習い事のハープとカフェ巡り。AWS では猫好きが多いのですが、私は犬好きで、ウェルシュ・コーギー・ペンブローク Lover です。
AWS を無料でお試しいただけます