Help us understand the problem. What is going on with this article?

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

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

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

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

今回やること

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

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

Untitled_New_Diagram_-_Cacoo.png

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

{
  "hello": "world"
}

AWSの準備

S3のバケットを作成する

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

S3_Management_Console.png

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

S3_Management_Console.png

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

S3_Management_Console.png

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

S3_Management_Console.png

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

S3_Management_Console.png

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

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

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

IAM_Management_Console.png

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

IAM_Management_Console.png

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

IAM_Management_Console.png

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

IAM_Management_Console.png

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

IAM_Management_Console.png

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

IAM_Management_Console.png

IoT Coreの証明書を作成する

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

AWS_IoT.png

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

AWS_IoT.png

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

AWS_IoT.png

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

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

AWS_IoT.png

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

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

AWS_IoT.png

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

AWS_IoT.png

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

AWS_IoT.png

IoT Coreのルールを作成する

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

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

AWS_IoT.png

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

AWS_IoT.png

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

AWS_IoT.png

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

AWS_IoT.png

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

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

AWS_IoT.png

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

AWS_IoT.png

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

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

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

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

AWS_IoT.png

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

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

mockmockの準備

プロジェクトを作成する

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

IoT開発を加速する仮想デバイス作成サービス___mockmock.png

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

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

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

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

IoT開発を加速する仮想デバイス作成サービス___mockmock.png

mockグループを作成する

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

IoT開発を加速する仮想デバイス作成サービス___mockmock.png

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

mockステータスを作成する

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

IoT開発を加速する仮想デバイス作成サービス___mockmock.png

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

IoT開発を加速する仮想デバイス作成サービス___mockmock.png

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

mockを作成する

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

IoT開発を加速する仮想デバイス作成サービス___mockmock.png

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

IoT開発を加速する仮想デバイス作成サービス___mockmock.png

テスト送信する

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

IoT開発を加速する仮想デバイス作成サービス___mockmock.png

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

IoT開発を加速する仮想デバイス作成サービス___mockmock.png

mockmockからデータを送信する

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

mockを起動する

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

IoT開発を加速する仮想デバイス作成サービス___mockmock.png

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

68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f36303939362f35643466613034392d343066322d643539372d333262612d3338356138356335666433312e706e67.png

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

68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f36303939362f30343133653938332d313232612d613261322d663362332d3439626137346561313033312e706e67.png

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

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

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

S3_Management_Console_と_joburu_academic.png

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

S3_Management_Console_と_Slack___障害情報チャンネル___fusic.png

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

data-1574409957964.png

mockを停止する

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

Banners_and_Alerts_と_IoT開発を加速する仮想デバイス作成サービス___mockmock.png

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

まとめ

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

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

参考

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

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away