mockmockでAWS IoT Coreにデータを送るプロジェクトを作成する


こんにちは、mockmockチームエンジニアの岡嵜です。

本記事は mockmockアドベントカレンダー 3日目の記事です。
昨日は「mockmockでサーバー(Nginx)にデータを送るプロジェクトを作成する」でした。

今回は、mockmock から AWS IoT Core にデータを送るプロジェクトを作成する方法をまとめます。

今回やること

AWS IoT Coreにmockmockからデータを送るプロジェクトを作成します。

構成としては以下の通りです。

送信するデータはJSON形式で以下の内容とします。

{
  "hello": "world"
}

AWSの準備

S3のバケットを作成する

mockmockが送信したJSONをファイルとして保存するためのS3バケットを作成します。
S3のコンソール画面へアクセスし、「バケットを作成する」をクリックしてください。

「バケット名」を入力します。既にAWS上に存在しているバケット名は使用できないので、ご注意ください。
入力したら「次へ」をクリックしてください。

特に入力・変更する項目がないので、そのまま「次へ」をクリックしてください。

「パブリックアクセスをすべてブロック」にチェックが入っていることを確認して、「次へ」をクリックしてください。

「バケットを作成」をクリックしてください。以上でS3バケットの作成は完了です。

IoT Coreで使用するIAM Roleを作成する

IoT Coreで使用するIAM Roleを作成します。このIAM RoleにはS3へファイル(オブジェクト)をPUTするためのポリシーもアタッチします。

まずはIAMのコンソール画面へアクセスし「ロール」→「ロールの作成」の順にクリックしてください。

表示された画面で「AWSサービス」→「IoT」の順でクリックしてください。

同じ画面の下部に「ユースケースの選択」が表示されるので、「IoT」を選択して「次のステップ: アクセス権限」をクリックしてください。

特に入力・変更する項目がないので、そのまま「次のステップ: タグ」をクリックしてください。

この画面も、特に入力・変更する項目がないので、そのまま「次のステップ: タグ」をクリックしてください。

「ロール名」を入力して「ロールの作成」をクリックしてください。以上でIAM Roleの作成は完了です。

IoT Coreの証明書を作成する

IoTのコンソールへアクセスし、「安全性」→「証明書」→「作成」の順にクリックしてください。

「証明書の作成」をクリックしてください。

「このモノの証明書」「パブリックキー」「プライベートキー」をダウンロードしてください。
「有効化」をクリックして、「ポリシーのアタッチ」をクリックしてください。以上でIoT Coreの証明書の作成は完了です。

IoT Coreの証明書にポリシーをアタッチする

「新規ポリシーの作成」をクリックしてください。

以下の通り入力して、「作成」をクリックしてください。

項目 入力値
名前 任意のポリシー名
アクション iot:Connect,iot:Publish
リソースARN *
効果 許可

再度、IoTのコンソールへアクセスし、「安全性」→「証明書」の順にクリックしてください。
次に、先ほどダウンロードしたファイル名と同じプレフィックスが付いている証明書を探し、「・・・」→「ポリシーのアタッチ」をクリックしてください。

先ほど作成したポリシーを選択し、「アタッチ」をクリックします。以上でポリシーのアタッチは完了です。

IoT Coreのルールを作成する

mockmockからデータが送られてきたときの挙動を定義するため、ルールを作成します。

IoTのコンソールへアクセスし、「ACT」→「ルール」→「作成」の順にクリックしてください。

「名前」に任意の名前を、「ルールクエリステートメント」に「SELECT * FROM 'message'」を入力します。

続けて画面中程の「アクションの追加」をクリックします。

「Amazon S3バケットにメッセージを格納する」を選択肢て「アクションの設定」をクリックしてください。

以下の通り入力して、「アクションの追加」をクリックしてください。

項目 入力値
S3バケット 先の手順で作成したS3のバケット名
キー data-${timestamp()}
このアクションを実行するためのAWS IoTアクセス権限を付与するロールを選択または作成します 先の手順で作成したIAM Role名

アクションが設定されたことを確認して、「ルールの作成」をクリックしてください。以上でルールの作成は完了です。

AWS IoT Coreのエンドポイントの確認

mockmockのデータの送信先となるエンドポイントを確認します。

IoTのコンソールへアクセスし、「設定」をクリックしてください。

「エンドポイント」が表示されます。(後ほど必要となります)

Root証明書ファイルのダウンロード

AmazonルートCA1へアクセスして、ブラウザのツールバーにて「ファイル」→「保存」を実行してください。(後ほど必要となります)

mockmockの準備

プロジェクトを作成する

プロジェクト新規作成画面へアクセスし、以下の通り入力後、「登録」をクリックしてください。

項目 入力値
プロジェクト名 任意のプロジェクト名
サーバタイプ [AWS]AWS IoT Core
キャパシティ cn1
プロトコル MQTTS
送信先ホスト 先の手順で確認したAWS IoT Coreのエンドポイント
証明書ファイル 先の手順でダウンロードした「このモノの証明書」
秘密鍵ファイル 先の手順でダウンロードした「プライベートキー」
Root証明書ファイル 先の手順で保存したRoot証明書ファイル
SSL/TLS TLSv1.2

データテンプレートを作成する

送信するデータのテンプレートを作成します。

データテンプレート新規作成画面へアクセスし、「テンプレート名」に任意の名前を入力後、「登録」をクリックしてください。

mockグループを作成する

mockグループ新規作成画面へアクセスし、以下の通り入力後、「登録」をクリックしてください。

項目 入力値
mockグループ名 任意のmockグループ名
最大稼働時間[sec] 600

mockステータスを作成する

次に「mockステータス」を作成します。
「作成したmockグループ名」→「mockステータス」→「mockステータス作成」の順でクリックしてください。

以下の通り入力後、「登録」をクリックしてください。

項目 入力値
状態名 default
初期状態 チェック
Topic message
QoS 1
Retain 無効
最小送信間隔[sec] 10
最大送信間隔[sec] 10
データテンプレート 作成したデータテンプレート名

mockを作成する

いよいよmockを作成します。「mockステータスタブ」で「mock新規作成」をクリックしてください。

そのまま「登録」をクリックしてください。

テスト送信する

設定に齟齬が無いかテスト送信をして確認します。「mockステータスタブ」で「送信」をクリックしてください。

このように「成否」に「true」が表示されれば成功です。

mockmockからデータを送信する

いよいよデータを送信します。

mockを起動する

「作成したmockグループ名」→「mock作成」の順でクリックしてください。

そのまま「登録」をクリックしてください。

mockが作成されました。
作成したmockの「操作」→「起動」をクリックしてください。

mockが作成され、データ送信が始まります。

送信したデータを確認する

S3のコンソール画面へアクセスし、作成したバケット名をクリックするとファイル(オブジェクト)が作成されていることがわかります。

任意のファイル(オブジェクト)をクリックして表示された画面で、「ダウンロード」をクリックしてください。

ダウンロードしたファイルをエディタで開くと、mockmockから送信したJSONが記載されていることが確認できるはずです。

mockを停止する

起動中のmockの「操作」→「停止」をクリックしてください。

以上でmockの停止は完了です。

まとめ

本記事では、mockmockからAWS IoT Coreにデータを送るプロジェクトを作成しました。
IoTシステムにおいてクラウドの入り口にAWS IoT Coreを採用している事例は多いと思われますので、ぜひご活用ください。

明日も引き続き私@Y_uuuが、mockmockでGoogle Cloud IoT Coreにデータを送るプロジェクトを作成する方法をご紹介します。

参考

[AWS] AWS IoT Coreにデータを送る