【问题标题】:Automating Deployment of AWS API Gateway Stage自动部署 AWS API Gateway 阶段
【发布时间】:2018-11-12 02:39:23
【问题描述】:
【问题讨论】:
标签:
amazon-web-services
aws-lambda
aws-api-gateway
boto3
【解决方案1】:
如果您想坚持通过特定的 boto3 API 调用进行部署,那么您需要遵循以下粗略的 boto3 API 调用顺序:
【解决方案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 自动部署的东西,而不必担心在你的主项目之上设置和维护它。