I have created a SAM stack with a CI/CD pipeline using this tutorial as a guide.
https://catalog.workshops.aws/complete-aws-sam/en-US/module-4-cicd/module-4-cicd-codepipeline/50-sampipeinit
I have used sam pipeline init --bootstrap to Crete a pipeline with the ‘Two-stage pipeline’ from template.
Everything was fine.
I then added the following to my SAM template to add a dynamo DB table
UserDataTable:
Type: AWS::Serverless::SimpleTable
Properties:
TableName: UserData
PrimaryKey:
Name: UserID
Type: String
ProvisionedThroughput:
ReadCapacityUnits: 5
WriteCapacityUnits: 5
After this the code pipeline failed on the prod stage with the following error
UserData already exists in stack
arn:aws:cloudformation:<>region>[myARN ] The following resource(s) failed to create: [UserDataTable].
So it appears that there is a name clash.
My question is this,
I thought the names we give in the SAM templates are “ logical names “ which are later translated to physical names during stack creation. For example I have other resources defined as below
MyCognitoUserPool:
Type: AWS::Cognito::UserPool
<Rest of the code >
MyApi:
Type: AWS::Serverless::Api
Properties:
StageName: Prod
<Rest of the code>
These things don’t create any name clashes. Why is Dynamo DB behaving differently and how do I fix this please?