AWS :: ApiGateway :: Stage требует DeploymentId ... но где я могу найти это? - PullRequest
3 голосов
/ 19 марта 2019

Я пытаюсь программно настроить этапы в рамках моего развертывания шлюза AWS API.Я использую SAM CLI. Документация по облачным технологиям дает определение:

DeploymentId Идентификатор развертывания, на который указывает этап.

Обязательно: Да

Тип: String

Для обновления требуется: без прерываний

и пример кода:

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к.

  • Это случайная строка, которую выбирает пользователь?
  • Это сгенерированный идентификатор, который где-то доступен?
  • Это имя ресурса илиAPI?и т. д.

Я гуглю и все еще не могу получить ответ.

Глядя в консоль управления AWS, я вижу некоторые из наших уже существующих API-интерфейсов.- если этапы уже существуют (настроены вручную), вы можете получить идентификатор развертывания с помощью этапов, но если мне придется сначала настроить их вручную, это отчасти отразится на цели CloudFormation AWS::ApiGateway::Stage не так ли ((в идеале, мы надеемся, что сможем создать API полностью с помощью кода, не вдаваясь в интерфейс AWS)?И разве deploymentId будет доступен только после развертывания?Если он доступен ранее (как часть сборки), как мне получить его и вставить в cloudformation.yaml перед развертыванием?

Любая помощь в понимании этого приветствуется!

1 Ответ

3 голосов
/ 19 марта 2019

Развертывание содержит метаданные о развертывании API-шлюза, такие как описание, и может также использоваться для развертывания канареечного выпуска .Вы можете создать ресурс развертывания как часть вашего шаблона CloudFormation.

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

Когда вы !Ref, он вернет DeploymentId.Обязательно прочитайте раздел документов под названием AWS :: ApiGateway :: Method Dependency , чтобы узнать, как подключить методы API к развертыванию.

...