我将如何通过使用Boto3的Python脚本自动部署API网关?例如,如果我在中创建了一个名为"V1“的阶段,我将如何编写一个脚本来部署这个阶段("V1")?
当前的过程包括从AWS控制台手动部署这个阶段,并且是不可编写脚本的。为了实现自动化,我希望有一个脚本来做同样的事情。
查阅Boto3文档,我发现有一种创建阶段(阶段)的方法,但没有一种用于部署阶段。
发布于 2018-06-04 16:41:17
如果您想继续通过特定的boto3 API调用进行部署,那么您希望遵循boto3 API调用的大致顺序:
get_rest_apis检索API ID。get_deployments部署。create_deployment创建部署。使用stageName参数指定要创建的阶段。create_base_path_mapping。update_stage。发布于 2018-06-02 12:01:48
要部署一个典型的(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发布于 2018-06-02 04:15:11
是的,您当前通过AWS浏览器控制台手动创建和部署apis的方式不是很好的脚本,但是您可以在控制台中单击的几乎任何东西都可以使用AWS cli完成。我觉得你想要一个自动化的CI / CD管道。一旦您知道了您将使用aws cli运行哪些命令,只需将它们添加到您的CI管道中,您就可以继续运行了。
但实际上还有更简单的方法。去AWS码座。单击“”并选中“”、"Python“和"AWS”。到今天为止,只有一个Codestar模板适合这三个,所以选择那个。这将构建一个完整的CI / CD管道(AWS CodePipeline),其中包含一个开发环境,连接到一个git项目。我认为这将是一个很好的方法,这样您就可以利用开发自动化部署工具,而不必担心在主项目之上设置和维护这个工具。
https://stackoverflow.com/questions/50652148
复制相似问题