代码之家  ›  专栏  ›  技术社区  ›  HolyMoly

AWS::ApiGateway::Stage需要DeploymentId…但我在哪里可以找到它?

  •  0
  • HolyMoly  · 技术社区  · 7 年前

    我正在尝试以编程方式设置阶段,作为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 在部署之前?

    任何有助于理解这一点的人都将不胜感激!

    0 回复  |  直到 7 年前
        1
  •  7
  •   bwest    7 年前

    部署包含有关API网关部署的元数据,如描述,还可用于部署 canary release .你可以创建一个 Deployment resource 作为云信息模板的一部分。

    Deployment: 
      Type: AWS::ApiGateway::Deployment
      Properties: 
        RestApiId: 
          Ref: "MyApi"
        Description: "My deployment"
        StageName: "DummyStage"
    

    当你 !Ref 它将返回 DeploymentId .请务必阅读文档中的部分 AWS::ApiGateway::方法依赖关系 了解如何将API方法附加到部署。