我正在尝试以编程方式设置阶段,作为AWS API网关部署的一部分。我正在使用SAM CLI。
The cloudformation docs
给出定义:
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——当
已经存在
(手动设置)您可以通过stages获得部署ID,但如果我必须先手动设置它们,这可能会部分破坏CloudFormation的功能
AWS::ApiGateway::Stage
是不是(…理想情况下,我们希望能够创建API的
彻底地
通过代码,而不进入AWS接口)?那不是吗
deploymentId
仅在部署后可用?如果它之前可用(作为构建的一部分),我如何获取它并将其放入我的
cloudformation.yaml
在部署之前?
任何有助于理解这一点的人都将不胜感激!