【问题标题】:Automating Deployment of AWS API Gateway Stage自动部署 AWS API Gateway 阶段
【发布时间】:2018-11-12 02:39:23
【问题描述】:

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

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

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

【问题讨论】:

    标签: amazon-web-services aws-lambda aws-api-gateway boto3


    【解决方案1】:

    如果您想坚持通过特定的 boto3 API 调用进行部署,那么您需要遵循以下粗略的 boto3 API 调用顺序:

    【讨论】:

    • 我在 GitHub 上放了一个示例,将其置于上下文中。它展示了如何使用 Boto3 创建和部署 API Gateway REST API。这是一个链接:aws-doc-sdk-examples.
    【解决方案2】:

    要部署典型的(API 网关/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

    【讨论】:

      【解决方案3】:

      是的,您当前通过 AWS 浏览器控制台手动创建和部署 API 的方式不是很可编写脚本,但是您可以在控制台中单击的几乎所有内容都可以通过 AWS cli 完成。听起来你想要一个自动化的 CI / CD 管道。一旦你弄清楚你将使用 aws cli 运行哪些命令,只需将它们添加到你的 CI 管道中,你就可以开始使用了。

      但实际上,还有一种更简单的方法。转到AWS Codestar。点击“create new project”并勾选“Web Service”、“Python”和“AWS Lambda”。到今天为止,只有一个 Codestar 模板适合这三个模板,所以选择那个。这将构建一个完整的 CI / CD 管道(AWS CodePipeline),其中包含一个开发环境,连接到一个 git 项目。我认为这对你来说是一个好方法,这样你就可以利用 dev-opsy 自动部署的东西,而不必担心在你的主项目之上设置和维护它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-01-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-26
        • 1970-01-01
        • 2020-11-24
        • 2018-01-08
        相关资源
        最近更新 更多