aws / aws/serverless-application-model

BasePathMapping deployment error: Invalid stage identifier specified

Open
#192 33 comments 7 reactions 0 assignees View on GitHub
area/examples contributors/good-first-issue maintainer/need-followup type/docs
Dominant language
Python
Stars
9.6k
Forks
2.5k
Avg merge
1d 11h
Merged PRs (30d)
7

Description

I have a SAM template deploying three resources: An ApiGateway, a Lambda Function and a ApiGateway BasePathMapping.

```
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Parameters:
StageName:
Type: String
Resources:
api:
Type: AWS::Serverless::Api
Properties:
DefinitionBody: ...
StageName: !Ref StageName
apidomain:
Type: AWS::ApiGateway::BasePathMapping
Properties:
DomainName: mydomain.com
RestApiId: !Ref api
Stage: !Ref StageName
lambda:
Type: AWS::Serverless::Function
Properties: ...
```

There is one parameter to the template called StageName, and this is used in two places:

1. The StageName for the ApiGateway
2. The Stage value for the BasePathMapping

When this stack is deployed, Cloud Formation deploys things in a strange order. It deploys the Api Gateway before the BasePathMapping, which you would expect, but deploying the ApiGateway stage is a separate step. It tries to deploy the BasePathMapping before the ApiGateway Stage, which results in the error:

> Invalid stage identifier specified

This is totally underdtandable given it has not been created yet.

I have tried using the DependsOn property on the BasePathMapping resource to force it to get created after the ApiGateway. It does, but not after the ApiGateway stage.

Does anyone know a way around this? It feels like a bug with the AWS::Serverless::Api resource type. It clearly needs to create a Gateway and a Stage, but the should be done sequentially not not allow the BasePathMapping to be created in between.

**Work arounds I don't like include:**

1. A two stage deployment. First without the BasePathMapping, then with it

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.