Boto3 Lambda - Existing custom IoT Rule as event source

0

Hello forum,

We know and are able to set existing custom IoT Rule as a Trigger for AWS Lambda.

We are currently using boto3 to create lambda function.

After creating lambda function we tried to set an existing custom IoT Rule as trigger using create_event_source_mapping().

This is resulting in below error -

An error occurred (InvalidParameterValueException) when calling the CreateEventSourceMapping operation: Unrecognized event source, must be kinesis, dynamodb stream or sqs. Unsupported source arn : arn:aws:iot:xx-xx-1:xxxxxxxxxxxx:rule/ruleName

Please find the code for the same below -

import boto3
import botocore.exceptions

function_name = sample_function
trigger_arn = arn:aws:iot:xx-xx-1:xxxxxxxxxxxx:rule/ruleName

client = boto3.client('lambda')
client.create_event_source_mapping(EventSourceArn=trigger_arn,FunctionName=function_name)

Is this not supported or possible using boto3?

How to fix this?

  • Hi edgegoldberg, Did you figure out or solve this issue? I am struggling with the same error when trying to set up an IoT Rule as a trigger to a lambda function in a cloudformation template, and using the EventSourceMapping resource.

asked 2 years ago466 views
1 Answer
0

Lambda event source mapping is used only for the event sources that Lambda needs to poll such as SQS, Kinesis, Kafka, etc. IoT Rules are different. In order to trigger a Lambda function from an IoT rule you need to use the create_topic_rule in the IoT client.

profile pictureAWS
EXPERT
Uri
answered 2 years ago
  • Hi Uri, Thank you for the response. Yes I checked that earlier and I knew that I can use create_topic_rule to create new rule and set an action to trigger lambda. But I don't think I could use create_topic_rule to set an action to trigger lambda for an already created rule. Could you please point out which API I should use for the same? (I am expecting that I just have to pass the ARN of the existing rule and ARN of the lambda)

You are not logged in. Log in to post an answer.

A good answer clearly answers the question and provides constructive feedback and encourages professional growth in the question asker.

Guidelines for Answering Questions