serverless-application-model: LanguageExtensions and Serverless-2016-10-31 conflicts
Description
In my SAM template I’m deploying a dynamo table and api gateway mappings along with normal things like lambdas and the api gateway itself.
The AWS::ApiGateway::BasePathMapping depends on the resApiGatewayStage which is created during the transform. So by the end of the transform when it goes to validate the template it’s all good.
When I add in a DeletionPolicy on the AWS::DynamoDB::Table to set it to Retain for prod and add AWS::LanguageExtensions to the top of the transforms I get an error.
What I believe is happening is that after AWS::LanguageExtensions is done transforming things it validates the template but because I have a reference to resApiGatewayStage which doesn’t exist (yet) then it fails.
resAPIBasePathMapping:
Type: AWS::ApiGateway::BasePathMapping
Condition: conditionBuildBasePath
DependsOn: resApiGatewayStage
Properties:
BasePath: !If
- conditionNotFeatureBranch
- !Sub "${paramServiceName}"
- !Sub "${paramServiceName}-${paramFeatureBranch}"
DomainName:
Fn::ImportValue: !Sub export-environment-domain-${paramEnvironment}
RestApiId: !Ref resApiGateway
Stage: !Ref paramEnvironment
Steps to reproduce
Have a template which has
- a resource with a deletion policy with an intrisnic function.
- a resource which depends on resources created during the SAM transformation.
Conditions:
conditionIsProd: !Equals [!Ref paramEnvironment, prod]
DynamoTable:
Type: AWS::DynamoDB::Table
# DeletionPolicy: "Retain"
DeletionPolicy: !If
- conditionIsProd
- Retain
- Delete
Observed result
Change set created fails with
Template format error: Unresolved resource dependencies [resApiGatewayStage] in the Resources block of the template
Expected result
Successful deployment
Additional environment details
WSL2, Ubuntu Ubuntu MacOSX
SAM CLI, version 1.66.0
- OS:
- If using the SAM CLI,
sam --version: - AWS region:
About this issue
- Original URL
- State: closed
- Created a year ago
- Comments: 17 (9 by maintainers)
Hi there, thanks for reporting this issue. I’ll take a look at this problem and get back to you.