自动化部署AWS API Gateway阶段

3
我该如何使用Boto3编写Python脚本来自动部署AWS API Gateway?例如,如果我在AWS控制台中为API Gateway创建了一个名为“V1”的阶段,我该如何编写一个脚本来部署该阶段(“V1”)?
当前的流程需要手动从AWS控制台部署阶段,无法进行脚本处理。为了实现自动化,我想编写一个脚本来完成同样的工作。
查阅Boto3文档后,我发现有一种创建阶段的方法(http://boto3.readthedocs.io/en/latest/reference/services/apigateway.html#APIGateway.Client.create_stage),但没有部署阶段的方法。
3个回答

4

如果你希望继续通过特定的boto3 API调用部署,那么你需要遵循以下大致的boto3 API调用序列:


1
我在GitHub上放了一个例子以便理解。它展示了如何使用Boto3创建和部署API Gateway REST API。这是链接: aws-doc-sdk-examples - Laren Crawford

3

如果您想部署典型的(API Gateway/Lambda),我建议使用AWS SAM而不是编写自己的代码。

AWS SAM甚至支持Swagger,您可以在SAM定义文件中定义阶段(e.g.)。

  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,部署很容易集成到持续交付流水线中。

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

请参考: 部署基于 Lambda 的应用

1

是的,您目前通过AWS浏览器控制台手动创建和部署API的方式不太可脚本化,但几乎可以使用 AWS cli中控制台中的任何单击操作。听起来您想要一个自动化的CI / CD流水线。一旦确定了使用aws cli运行的命令,只需将它们添加到CI流水线中,您就可以开始工作了。

但事实上,有一种更简单的方法。转到 AWS Codestar。单击“创建新项目”,然后选中“Web服务”、“Python”和“AWS Lambda”。截至今天,只有一个Codestar模板符合所有三个条件,因此选择该模板。这将搭建一个完整的CI / CD流水线(AWS CodePipeline),其中包含一个开发环境,连接到git项目。我认为这对您来说是一个很好的方式,因为您可以利用dev-opsy自动化部署功能,而无需担心在主项目之上设置和维护它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接