目前,我可以通过推送到github来部署一个lambda。我还自动部署了一个lambda,但这只是因为api网关是lambda yaml文件中的一个事件
AWSTemplateFormatVersion: '2010-09-09'
Transform: 'AWS::Serverless-2016-10-31'
Description: Identifies paragraphs in documents and links to the law
Resources:
LambdaParagraphLinker:
Type: 'AWS::Serverless::Function'
Properties:
Handler: LambdaParagraphLinker.lambda_handler
Runtime: python3.6
CodeUri: ./
Description: Identifies paragraphs in documents and links to the
law
MemorySize: 512
Timeout: 10
Events:
Api:
Type: Api
Properties:
Path: /LambdaParagraphLinker
Method: ANY如何使用swagger文件部署api网关?
发布于 2017-06-28 06:34:23
毫无疑问,在代码管道中实现这一点的最好方法是使用https://serverless.com/框架。这取代了我以前使用的每一个超级复杂的黑客工作和变通方法。简单得多的IMO。
创建一个codepipeline,将它链接到src &一个codebuild项目,设置一些权限,完成。
//serverless.yml .yml
service: my-api
provider:
name: aws
runtime: python2.7
functions:
hello:
handler: handler.hello
events:
- http:
path: api/v1/message
method: post//buildspec.yml
version: 0.2
phases:
install:
commands:
#BUILD
- sudo apt-get update -y
build:
commands:
- echo $environment
- serverless package --stage $environment --region us-east-1
- serverless deploy --stage $environment --region us-east-1或者通过执行下面的选项之一来折磨自己。
您可以在cloudformation中从代码管道中完成此操作。从gatewayapi控制台中导出swagger spec并放入cloudformation模板中。
AWSTemplateFormatVersion: '2010-09-09'
Resources:
PlayersAPI:
Type: AWS::ApiGateway::RestApi
Properties:
Name: MyApi
Description: API Description
Body:
"SWAGGER HERE"将此连接到lambda有点麻烦,但我可以描述步骤。首先,创建一个包含源代码、构建和部署步骤的codepipeline项目。
//buildspec.yml
version: 0.1
phases:
install:
commands:
#BUILD
- zip -r lambda.zip . -x *.git*
artifacts:
files:
- '**/*.zip'
- '**/*.yml'
discard-paths: no让构建步骤导出一个工件MyAppBuild (或者您想叫它的任何东西)
流水线的最后一步是通过控制台(其可重用的)将这个repo中的lambda函数创建为一个独立的函数:https://github.com/tkntobfrk/codepipeline-lambda-s3
这个lambda函数下载管道工件/压缩的lambda函数,并使用boto更新它。
在这些步骤之后,您可以添加另一个步骤作为cloudformation部署步骤。将它连接到您刚刚部署的lambda函数。
如果您要处理多个环境,您可以为每个环境创建lambda函数和gatewayapi cloudformation模板,然后按顺序运行它们。
<代码>H121阶段5:部署λ产品,部署网关api云形成产品<代码>H222<代码>F223
像这样直接使用AWS服务器也行得通。但是,您需要为uri使用标准的工件位置。API的DefinitionUri:可以是从gatewayapi控制台导出的swagger。
//cloudformation.yml
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Resources:
MySimpleFunction:
Type: AWS::Serverless::Function
Properties:
Handler: app.lambda_handler
Runtime: python2.7
CodeUri: s3://somebucket/somezip.zip
MyAPI:
Type: AWS::Serverless::Api
Properties:
StageName: prod
DefinitionUri: s3://somebucket/somezip.zip发布于 2017-06-24 06:48:47
AWS::Serverless::Api
你可以在所有地方找到Swagger文档,关于API网关扩展的文档在开发人员指南中。首先,我将进入API Gateway控制台,查看Lambda为您创建的API。您可以转到“Stages”页面,对于任何stage,您都可以将API导出为Swagger。
https://stackoverflow.com/questions/44730419
复制相似问题