We have a rule where the condition is based on data from dynamodb. We wanted the filtering based on if given key had an item in the database. The query looks like:
SELECT * FROM '$aws/events/presence/connected/+' WHERE NOT isNull(get_dynamodb(MY_TABLE, 'HashKey', MY_HASHKEY, 'RangeKey', MY_RANGEKEY, MY_ROLE))
When the data is present the rule works as expected, but when it is not we get these errors logged in CloudWatch:
details: Not able to retrieve and/or parse the requested item from dynamo. ErrorMessage:
eventType: FunctionExecution
logLevel: ERROR
details: Function 'GetDynamodb' failed to execute for rule MY_RULE. Not able to retrieve and/or parse the requested item from dynamo. ErrorMessage:
eventType: RuleExecution
logLevel: ERROR
reason: ExternFunctionException
So the questions are:
- Can i use the get_dynamodb function to check if a item exists in the database, or can I only use this function if I know that the data for a given key is present?
- Should I expect my error action to trigger in the case described above (testing indicates that my error action is not triggered)?
Thanks for the quick answer!
This was unexpected(and disappointing seen from my use case). Could it be an idea to update the documentation for that function (https://docs.aws.amazon.com/iot/latest/developerguide/iot-sql-functions.html#iot-sql-function-get-dynamodb)?
I have created a request for the documentation to be updated.