【AWS IoTルールの基本 その1】AWS IoTルールの設定方法

こんにちは、Michaelです。
今回から、「AWS IoTルールの基本」と題して、AWS IoTから他のサービスに連携するためのルールについて紹介していきます。
第1回は、AWS IoTルールの基本的な設定方法を紹介します。

AWS IoTルールについて

AWS IoTルールは、トピックやメッセージ内容の条件を基に、Publishされたメッセージを他のAWSのサービスに連携させるための機能です。AWS IoTに入ってきたメッセージをS3に保存したり、トリガーとしてLambdaを起動したりといった場合に設定をします。
SQLベースのクエリを用いて簡易的なメッセージの加工を行うことができるため、連携先に合わせた形式でメッセージを連携させることもできます。

IAMロールの設定

ルールを設定するにあたり、以下の2つのポリシーをアタッチしたIAMロールを作成しておきます。以下のポリシーは、AWSコンソールの「ロールの作成」ウィザードを使用すると自動的にアタッチされます。

ポリシー名 内容
AWSIoTLogging CloudWatch Logsへのログ出力
AWSIoTRuleActions AWS IoTルールのアクションで使用する最低限の実行権限

ルールの設定手順

AWS IoTのルールの設定項目は以下の3点になります。

① ルールの名称と説明
② メッセージソース (AWS IoT SQLの設定)
③ ルールアクション (他のサービスとの連携の設定)

AWS IoTルールの設定をするには、AWS IoTコンソールの左の「ルール」をクリックし、画面右上の「作成」をクリックします。

ルールの名称と説明

ルールの「名前」は、ルールの一覧に表示される名称となるため、一意に識別できる名称を付けます。使用できる文字は、半角英数とアンダーバー(_)のみです。「説明」はルールに関する詳細を入力します。

メッセージソースの設定

メッセージソースは、AWS IoTからアクション先に出力するメッセージの内容、条件を設定できます。出力内容は、AWS IoT SQLというトピックをDBのテーブル、メッセージのJSONをレコードに見立てたクエリで設定します。


組み込み関数を使用することもでき、「clientid()」でメッセージ発信元のClientIdを取得したり、「timestamp()」で受信した時刻を取得したりといったことができます。
例えば、ClientIdと受信時刻をそれぞれ「client_id」、「timestamp」としてメッセージに付加する場合には、以下のようなクエリを設定します。

ルールアクションの設定

ルールアクションは、設定条件に一致した場合に連携するサービスとその実行内容を設定します。設定できるアクションは以下のようになります。
※詳細なアクションの設定は「その2」以降で紹介します。

アクション内容
DynamoDB テーブルにメッセージを挿入する
データベーステーブル (DynamoDBv2) の複数列にメッセージを分割する
メッセージデータを渡す Lambda 関数を呼び出す
SNS プッシュ通知としてメッセージを送信する
SQS キューにメッセージを送信する
Amazon Kinesis ストリームにメッセージを送信する
AWS IoT のトピックにメッセージを再パブリッシュする
Amazon S3 バケットにメッセージを格納する
CloudWatch にメッセージデータを送信する
CloudWatch アラームの状態を変更する
Amazon Elasticsearch Service にメッセージを送信する
Salesforce の IoT クラウド入力ストリームへのメッセージの送信

アクションは複数設定でき、S3にメッセージを保存すると同時に、Lambdaを起動するといった設定も可能です。

まとめ

AWS IoTルールは、IoTデバイスとAWSのサービスを連携させる基本の設定となります。
次回からは、ルールアクションを掘り下げて、実際のサービス連携について紹介していきます。
第2回は、AWS IoTの他のトピックにRepublishする設定を紹介します。
お楽しみに!

この記事を書いた人

aws-recipe-user