AWS Get API 网关 URL 用于云形成
AWS Get API Gateway URL for Use in Cloud Formation
我希望使用 CloudFormation 构建我的 AWS 堆栈,其中包括一个 API 网关和使用计划。我想在我的主 CloudFormation 模板中指定我的使用计划,而不是在初始堆栈创建后将它们添加为变更集。问题是当我包含使用计划时堆栈无法创建,因为(我认为)API 网关在尝试创建使用计划时未完成部署,因为我收到一条错误消息说阶段 "prod" 不存在。我的 CloudFormation 模板(提取)如下所示:
Api:
Properties:
CacheClusterEnabled: true
CacheClusterSize: '0.5'
DefinitionUri: {MYS3URL}
StageName: prod
Type: AWS::Serverless::Api
ApiFreeUsagePlan:
DependsOn: Api
Properties:
ApiStages:
- ApiId:
Ref: Api
Stage: prod
Description: Free usage plan
UsagePlanName: Free
Type: AWS::ApiGateway::UsagePlan
我认为将 DependsOn: Api
添加到使用计划定义中会奏效,但事实并非如此,所以我没有想法?
我的 DependsOn 语句似乎应该在 ApiDeployment 上,当它尝试创建使用计划时,我可以在堆栈创建事件中看到它仍在进行中
我发现可以做到这一点的唯一方法是将使用计划的 DependsOn 属性 设置为逻辑 Api 阶段名称,即 {LogicalApiName }{StageName}以我为例的舞台:
Api:
Properties:
CacheClusterEnabled: true
CacheClusterSize: '0.5'
DefinitionUri: {MYS3URL}
StageName: prod
Type: AWS::Serverless::Api
ApiFreeUsagePlan:
DependsOn: ApiprodStage
我不喜欢这个,因为它依赖于我认为 AWS CloudFromation 文档中没有正式记录的逻辑阶段命名约定,但它似乎是唯一可靠的选择
我希望使用 CloudFormation 构建我的 AWS 堆栈,其中包括一个 API 网关和使用计划。我想在我的主 CloudFormation 模板中指定我的使用计划,而不是在初始堆栈创建后将它们添加为变更集。问题是当我包含使用计划时堆栈无法创建,因为(我认为)API 网关在尝试创建使用计划时未完成部署,因为我收到一条错误消息说阶段 "prod" 不存在。我的 CloudFormation 模板(提取)如下所示:
Api:
Properties:
CacheClusterEnabled: true
CacheClusterSize: '0.5'
DefinitionUri: {MYS3URL}
StageName: prod
Type: AWS::Serverless::Api
ApiFreeUsagePlan:
DependsOn: Api
Properties:
ApiStages:
- ApiId:
Ref: Api
Stage: prod
Description: Free usage plan
UsagePlanName: Free
Type: AWS::ApiGateway::UsagePlan
我认为将 DependsOn: Api
添加到使用计划定义中会奏效,但事实并非如此,所以我没有想法?
我的 DependsOn 语句似乎应该在 ApiDeployment 上,当它尝试创建使用计划时,我可以在堆栈创建事件中看到它仍在进行中
我发现可以做到这一点的唯一方法是将使用计划的 DependsOn 属性 设置为逻辑 Api 阶段名称,即 {LogicalApiName }{StageName}以我为例的舞台:
Api:
Properties:
CacheClusterEnabled: true
CacheClusterSize: '0.5'
DefinitionUri: {MYS3URL}
StageName: prod
Type: AWS::Serverless::Api
ApiFreeUsagePlan:
DependsOn: ApiprodStage
我不喜欢这个,因为它依赖于我认为 AWS CloudFromation 文档中没有正式记录的逻辑阶段命名约定,但它似乎是唯一可靠的选择