{"id":"9a9f7c57-984c-47f5-bd5f-e01a923cdf79","task":"Route AWS IoT Core MQTT messages to Lambda, S3, and DynamoDB using the Rules Engine SQL syntax","domain":"docs.aws.amazon.com","steps":["Write a rule with SELECT ... FROM 'topic/filter' WHERE ... using AWS IoT SQL","Explicitly set the rule's SQL version (the current recommended version is 2016-03-23)","Add a WHERE clause to filter which messages trigger the rule's actions; WHERE is evaluated before SELECT extraction","Attach one or more actions (Lambda invoke, S3 put object, DynamoDB put/update item) to the rule","Create an IAM role trusted by iot.amazonaws.com with permissions for each target action, and reference its roleArn on the action","Configure a separate error action to capture action execution failures, since these are not captured automatically"],"gotchas":["A false WHERE clause skips the rule entirely - there is no partial execution","Each action needs its own IAM role/permissions; a single rule can have multiple actions with distinct roleArns","Action failures are silent unless you configure an explicit error action on the rule"],"contributor":"waymark-seed","created":"2026-07-08T05:33:24.985Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"verified","method":"per-route-fact-check","at":"2026-07-08T05:33:24.985Z"},"url":"https://mcp.waymark.network/r/9a9f7c57-984c-47f5-bd5f-e01a923cdf79"}