以下の内容はhttps://yunkt.hatenablog.com/entry/2026/01/19/131208より取得しました。


AWS IoT rule, Topic Ruleの用語整理

AWS IoTの用語で紛らわしいものに、AWS IoT Ruleと、Topic Ruleです。

どちらも、AWS IoTのトピックに届いたメッセージを、その後どうするか(別のリソースに配信するなど)、を表すAWSリソースです。

この二つは、どこが違うのでしょうか?

正解は、違いません。全く同じで、同じ概念です。

AWS CLIを使ってルールを作成するコマンドは以下のとおりなので、システム的には、Topic Ruleが正式で、それを至る所でTopicを省略し、その後、AWS IoTの中の、と言う意味合いでAWS IoTをつけて、AWS IoT Ruleとなっています。

aws iot create-topic-rule --rule-name myrule --topic-rule-payload file://myrule.json

CloudFormationでは、 AWS::IoT::TopicRule と言うリソース名です。

ただし、SAMには、本当に、IoTRuleと言う用語が出てきます。

AWSTemplateFormatVersion: "2010-09-09"
Transform: AWS::Serverless-2016-10-31
Description: Minimal SAM: IoT Rule -> Lambda

Resources:
  IotMessageHandler:
    Type: AWS::Serverless::Function
    Properties:
      Runtime: python3.12
      Handler: app.lambda_handler
      InlineCode: |
        import json

        def lambda_handler(event, context):
            # IoT Rule の SELECT * の結果が event に入ります
            print("event:", json.dumps(event))
            return {"ok": True}

      Events:
        FromIotTopic:
          Type: IoTRule  # <= !!ここ!!
          Properties:
            AwsIotSqlVersion: "2016-03-23"
            # 例: devices/<deviceId>/telemetry に publish されたものを拾う
            Sql: "SELECT * FROM 'devices/+/telemetry'"

SAM は内部的に以下を行なっています。

  1. AWS::IoT::TopicRule を生成
  2. SQL(SELECT … FROM …)を設定
  3. Lambda を Action として紐づけ
  4. Lambda invoke 用の permission も自動生成

あくまで、SAM専用の用語で、IoTRule ≠ TopicRuleですが、IoTRuleの中でTopicRuleが作られます(使われます)。




以上の内容はhttps://yunkt.hatenablog.com/entry/2026/01/19/131208より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14