首页 文章

自动部署AWS API网关阶段

提问于
浏览
1

我如何使用Boto3通过Python脚本自动部署AWS API Gateway?例如,如果我在AWS Portal的AWS Gateway中创建了一个名为“V1”的阶段,我将如何编写脚本来部署该阶段(“V1”)?

当前流程涉及从AWS控制台手动部署阶段,并且不可编写脚本 . 出于自动化的目的,我想有一个脚本来做同样的事情 .

咨询Boto3文档,我看到有一种创建阶段的方法(http://boto3.readthedocs.io/en/latest/reference/services/apigateway.html#APIGateway.Client.create_stage),但没有用于部署阶段的方法 .

3 回答

  • 1

    如果您希望坚持通过特定的boto3 API调用进行部署,那么您需要遵循这个粗略的boto3 API调用序列:

  • 2

    要部署典型的(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
    

    使用AWS CLI可轻松将部署集成到CD管道中

    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
    

    另见:Deploying Lambda-based Applications

  • 2

    是的,您目前通过AWS浏览器控制台手动创建和部署apis的方式不是很易编写脚本,但您可以使用AWS cli完成任何可以在控制台中单击的内容 . 听起来像你想要一个自动化的CI / CD管道 . 一旦你找出了你用aws cli运行的命令,只需将它们添加到你的CI管道中就可以了 .

    但实际上,还有一种更简单的方法 . 转到AWS Codestar . 单击"create new project"并选中"Web Service","Python"和"AWS Lambda" . 截至今天,只有一个适合所有三个的Codestar模板,因此请选择一个 . 这将构建一个完整的CI / CD管道(AWS CodePipeline)与一个开发环境,连接到一个git项目 . 我认为这对您来说是一个很好的方式,因此您可以利用开发自动化部署的东西,而无需担心在主项目之上设置和维护它 .

相关问题