Автоматизация развертывания AWS API Gateway Stage - PullRequest
0 голосов
/ 02 июня 2018

Как мне автоматизировать развертывание шлюза API AWS с помощью скрипта Python с использованием Boto3?Например, если я создал этап с именем «V1» в консоли AWS для API-шлюза, как мне написать сценарий для развертывания этого этапа («V1»)?

Текущий процесс включает в себя развертывание этапавручную из консоли AWS и не является сценарием.В целях автоматизации мне бы хотелось, чтобы у меня был такой же сценарий.

Сверяясь с документацией Boto3, я вижу, что есть способ создания этапа (http://boto3.readthedocs.io/en/latest/reference/services/apigateway.html#APIGateway.Client.create_stage),, но нет способа его развертывания.

Ответы [ 3 ]

0 голосов
/ 02 июня 2018

Для развертывания стандартного (API Gateway / Lambda) я бы порекомендовал AWS SAM вместо написания собственного кода.

Он даже поддерживает Swagger, и вы можете определять свои этапы в файлах определения SAM.

например

  ApiGatewayApi:
    Type: AWS::Serverless::Api
    Properties:
      StageName: v1
      CacheClusterEnabled: true
      CacheClusterSize: "0.5"
      DefinitionUri: "swagger.yaml"
      Variables:
        [...]
  [...]
  MyFunction:
    Type: AWS::Serverless::Function
       Properties:
           Handler: ratings.handler
                Runtime: python3.6
                Events:
                  Api:
                    Type: Api
                    Properties:
                      Path: /here
                      Method: get
                      RestApiId: !Ref ApiGatewayApi

Развертывание легко интегрируется в конвейеры CD с помощью AWS CLI

aws cloudformation package \
   --template-file path/example.yaml \
   --output-template-file serverless-output.yaml \
   --s3-bucket s3-bucket-name

aws cloudformation deploy \
   --template-file serverless-output.yaml \
   --stack-name new-stack-name \
   --capabilities CAPABILITY_IAM

См. Также: Развертывание приложений на основе лямбды

0 голосов
/ 04 июня 2018

Если вы хотите придерживаться развертывания через определенные boto3 вызовы API, то вы хотите следовать этой грубой последовательности вызовов API boto3:

  • Использовать get_rest_apis для получения идентификатора API.
  • Возможно, проверьте, развернуто ли оно уже, используя get_deployments.
  • Используйте create_deployment длясоздать развертывание.Используйте параметр stageName, чтобы указать этап для создания.
  • При необходимости используйте create_base_path_mapping.
  • Также рассмотрите возможность использования update_stage если вам нужно включить что-то вроде регистрации.
0 голосов
/ 02 июня 2018

Да, ваш текущий способ создания и развертывания API-интерфейса вручную через консоль браузера AWS не очень хорошо подходит для сценариев, но практически все, что вы можете щелкнуть в консоли, можно сделать с помощью AWS cli .Для меня это звучит так, будто вы хотите автоматизированный конвейер CI / CD.Как только вы выясните, какие команды вы будете запускать с помощью aws cli, просто добавьте их в свой конвейер CI, и все будет хорошо.

Но на самом деле есть еще более простой способ.Перейдите на AWS Codestar .Нажмите «Создать новый проект» и отметьте «Веб-сервис», «Python» и «AWS Lambda».На сегодняшний день есть только один шаблон Codestar, который подходит всем трем, так что выберите этот.Это создаст полный конвейер CI / CD (AWS CodePipeline) с одной средой разработки, подключенной к git-проекту.Я думаю, что это был бы хороший способ для вас, так что вы можете использовать средства автоматизированного развертывания dev-opsy, не беспокоясь о настройке и поддержке этого поверх вашего основного проекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...