我正在尝试以编程方式设置阶段作为我的 AWS API Gateway 部署的一部分。我正在使用 SAM CLI。cloudformation 文档给出了定义:
DeploymentId 阶段指向的部署的 ID。
要求:是
类型:字符串
更新要求:无中断
和代码示例:
Resources:
Prod:
Type: AWS::ApiGateway::Stage
Properties:
StageName: Prod
Description: Prod Stage
RestApiId: !Ref MyRestApi
DeploymentId: !Ref TestDeployment ## <===== this
DocumentationVersion: !Ref MyDocumentationVersion
ClientCertificateId: !Ref ClientCertificate
Variables:
Stack: Prod
MethodSettings:
- ResourcePath: /
HttpMethod: GET
MetricsEnabled: 'true'
DataTraceEnabled: 'true'
- ResourcePath: /stack
HttpMethod: POST
MetricsEnabled: 'true'
DataTraceEnabled: 'true'
ThrottlingBurstLimit: '999'
- ResourcePath: /stack
HttpMethod: GET
MetricsEnabled: 'true'
DataTraceEnabled: 'true'
ThrottlingBurstLimit: '555'
TestDeployment
..但没有关于价值指向什么的上下文。
- 它是用户选择的随机字符串吗?
- 它是在某处可用的生成 ID 吗?
- 它是资源的名称还是 API 的名称?等等
我一直在谷歌搜索,但似乎仍然无法得到答案。
在 AWS 管理控制台中,我可以看到一些我们已经存在的 API——当阶段已经存在(手动设置)时,您可以通过阶段获取部署 ID,但如果我必须先手动设置它们,这会部分破坏 CloudFormation 的目的,AWS::ApiGateway::Stage
不是吗(...理想情况下,我们希望能够完全通过代码创建 API,而无需进入 AWS 接口)?部署后不是deploymentId
唯一可用的吗?如果它之前可用(作为构建的一部分),我如何获取它并将其放入我cloudformation.yaml
的部署之前?
感谢您对理解这一点的任何帮助!