AWS IoT ルールアクションを動かしてみました。

昨日に引き続き、AWS Iot Coreについて記事にしようと思います。

前回の記事はこちらです AWS Iot Coreについて

前回の記事にも書いていますが改めてRuleエンジンについて説明します。

Ruleエンジンについて

IoTデバイスからメッセージブローカーに送られてきたデータは[Ruleエンジン]というサブスクライバによって処理された上で他のAWSリソースに運ばれます。 Topicからデータを抜き取ってAWSリソースに送ります。

topicに送信されたデータに基づき、AWSのリソースへのアクセスをスムーズにする機能ですね。

今回はこの機能を使用して。‘sdk/test/Python’トピックに送られたjsonをcloudwachに送信するルールエンジンを作成しようと思います。

Iot SQLについては今回はそこまで深く掘り下げませんが、公式ドキュメントがめちゃくちゃ丁寧に書いてくれています。

いずれ記事にするかもしれません。

AWS IoT SQLリファレンス

ハンズオン

実際にルールを作成して、cloudwatchに送信します。

マネージメントコンソールからAWS IoT Coreを開きます。

ACT>ルール>作成をクリックします。

各項目を入力していきます。

今回のルールの名前は「hands_on_rule_cloud_watch」と入力しました。

ルールクエリステートメント:

SELECT * FROM 'sdk/test/Python'

意味合いとしては「sdk/test/Python」トピックにくるデータを全てアクションに渡すという意味ですね。 今回はsdk/test/Pythonトピックにデータがきたらcloudwatchにログを送るとも言いますね。

「1 つ以上のアクションを設定する」から「アクションの追加」クリックします。

「CloudWatchLogsにメッセージを送信する」にチェックを入れて「アクションの設定」をクリックします。

このページではCloudwatchのロググループと、IAMの設定をします。 今回は両方新規作成で ロググループ名は「hands-on-cloudwatch」 ロールは「hands-on-cloudwatch-role」としました。

ロググループの作成は

  • 「新しいリソースを作成する」
  • 別タブでcloudwatchのロググループが表示される
  • 「ロググループを作成する」

の流れで作成できます。

ロールの作成自体は「ロールの作成」からロール名を入力するだけで作成できますが後で、権限をいじる必要があります。

最後にアクションの追加をクリックすると元のルールの作成画面に戻ります。

ルールの作成をクリックすれば。ルールの作成は完了です。

IAMの権限をいじるタスクが残っているので、

マネージメントコンソールからIAMを開きます。

左のツールバーから、ロールを選択すると

ロールの中に先ほど作成したロール今回は「hands-on-cloudwatch-role」があると思います。

ロール名をクリックして、「ポリシーをアタッチします」>「CloudWatchLogsFullAccess」をアタッチすれば完了です。

これで、実装は終了です。

テスト

実装ができたので、実際にリクエストを送信してcloudwatchのログに表示されることを確認しようと思います。

私が先日作成したpublishのサンプルコードを実行して、ログを確認でももちろん問題なく動きますが、 AWS Iot Coreは簡易にmqttのメッセージの発行する機能があります。これを紹介しようと思います。

再び、マネージメントコンソールからAWS IoT Coreを開きます。

左の画面から「テスト」を開きます。

上のサブスクリプションは受信する機能なので、今回は無視してしたの発行でtopicを入力します。 今回は「sdk/test/Python」ですね メッセージは

{
  "message": "Hello from AWS IoT console"
}

なっていると思いますがそのままで大丈夫なので「トピックを発行」

cloudwatchlogsでデータを確認します。 マネージメントコンソールからcloudwatchを開きます。 ロググループ>「hands-on-cloudwatch」> 「hands_on_rule_cloud_watch–XXXXXXX」

“message”: “Hello from AWS IoT console"が表示されていて、無事受信できて、ログに出力できていますね。

まとめ

ルールアクションを使用して topicにデータが送られた際にスムーズに別のAWSリソースにアクセスする方法について紹介しました。 今回はCloudWatchに与えられたデータをそのまま出力しましたが、Iot SQLなどを使用したりすれば、整形した状態で別のAWSリソースにデータを投げるなど、なかなか夢が広がるサービスだなと感じます。

テスト機能で簡易にmqttリクエストの送受信できる機能もなかなか便利ですね。

完全に余談ですが、AWS関係のスクショ撮るの情報漏れを防ぐために色々考えてるとなかなか気を使いますね^q^

Nakano
Nakano
Back-end engineer

AWS,Rails,UE4,vue.js,hugo,その他なんでもやりたい