serverless-application-model: The event source and function provided mapping already exists. Please update or delete the existing mapping with UUID
Description: I am trying to implement Dynamodb streams and a trigger for lambda
myFunction:
Type: AWS::Serverless::Function
Properties:
Policies:
- AWSLambdaBasicExecutionRole
- DynamoDBCrudPolicy:
TableName: !Ref TableName
- DynamoDBStreamReadPolicy:
TableName: !Ref TableName
StreamName:
!Select
- 2
- !Split
- "/"
- Fn::ImportValue:
!Sub ${TableName}-streams-arn
CodeUri: bin/
Handler: myFunctions
Events:
dynamodb:
Type: DynamoDB
Properties:
Stream:
Fn::ImportValue: !Sub ${TableName}-streams-arn
StartingPosition: LATEST
BatchSize: 10
The first deployment was successful, however after adding the DynamoDBStreamReadPolicy
and changed StartingPosition
from TRIM_HORIZON
to LATEST
I got the following error:
The event source arn (" arn:aws:dynamodb:.../stream/... ") and function (" myFunction-...") provided mapping already exists. Please update or delete the existing mapping with UUID xxxx-xxxx-xxx-xxx (Service: AWSLambda; Status Code: 409; Error Code: ResourceConflictException; Request ID: xxxx-xxxxxxx-xxxx-xxx)
Observed result: Error
Expected result: Probably error, but at this point I did not find any explanation
PS: as my understanding once the event mapping is created must be replaced or deleted? If yes why it says “Please update or delete”? If now I want to change the mapping configuration do I need to remove it, deploy, add it again and redeploy?
Thanks
About this issue
- Original URL
- State: closed
- Created 5 years ago
- Reactions: 48
- Comments: 23 (3 by maintainers)
I also ran into and fixed this by calling
aws lambda list-event-source-mappings
to find the orphaned mapping thenaws lambda delete-event-source-mapping --uuid {uuid}
to remove itFor future Googlers: I had this issue, and it was because there was a manually-created trigger hanging around that wasn’t deleted with my stack. Using the CLI to delete by UUID, or going to SQS -> the queue -> Lambda triggers should have let me find it.
2 and half years later and still running into that problem. With a Lambda with an event source mapping in a SAM template. simply adding a layer to the lambda triggered this error. I am sure doing a lot of ClickOps today for something that is supposedly IAC.
I was able to execute the following manually, then the corresponding CloudFormation template succeeded:
However, I would advocate that the bug be resolved internally with AWS engineers. That way we don’t have to do one-off scripts/commands to ensure something expected to work correctly, actually works.
Thanks all for the input, very informative.
I’m able to reproduce this with a pure CloudFormation template:
That template will deploy fine.
But as @MatteoGioioso mentioned, if you change
StartingPosition
fromTRIM_HORIZON
toLATEST
and deploy again, you’ll get the error:Please fix, same issue here!
The issue also happens with AWS CDK (v1.134.0) generated CloudFormation templates. When the Lambda event source is a SQS queue.
Ok, this is a long standing bug with Cloudformation. Similar happening with Kinesis and it was already spotted in 2018 on the serverless framework. This is a minimal reproducible case with kinesis: https://github.com/MatteoGioioso/sls-event-source-mapping-bug You just need to change
startingPosition
fromTRIM_HORIZON
toLATEST
to trigger the bug.Use the aws cli as: aws lambda delete-event-source-mapping to delete the uuid that is “broken” then re-apply the cloud formation stack See: https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/delete-event-source-mapping.html
@hoffa I’m hitting the same. Can you please re-open and publish the status from “I’ve routed this issue internally.” ?
I also faced this issue while deploying the Terraform code 2nd time. Do we need to get rid of existing mapping everytime we make any change related to mapping ?
Hit the issue same day trying to update the kinesis source mapping settings.