こんにちは、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にデータを送るプロジェクトを作成する方法をご紹介します。