Amazon web services 如何设置从代码提交到Lambda函数的自动部署?
我试图将CodeCommit存储库的内容“部署”到Lambda函数(而不是应用程序)。 在这种特殊情况下,它是从源到目标的简单复制/粘贴 我正在努力找到一个解决方案,不涉及设置另一个lambda函数。据我所知,有一个解决方案使用代码构建和CloudFormation 有人能解决这个问题吗?或者,你能指出一些好的文档吗 附言: 我在StackOverflow上找到了似乎可以回答我问题的答案,但相关答案中的链接已经过时。您可以使用Amazon web services 如何设置从代码提交到Lambda函数的自动部署?,amazon-web-services,aws-lambda,aws-codepipeline,aws-codecommit,Amazon Web Services,Aws Lambda,Aws Codepipeline,Aws Codecommit,我试图将CodeCommit存储库的内容“部署”到Lambda函数(而不是应用程序)。 在这种特殊情况下,它是从源到目标的简单复制/粘贴 我正在努力找到一个解决方案,不涉及设置另一个lambda函数。据我所知,有一个解决方案使用代码构建和CloudFormation 有人能解决这个问题吗?或者,你能指出一些好的文档吗 附言: 我在StackOverflow上找到了似乎可以回答我问题的答案,但相关答案中的链接已经过时。您可以使用CodeBuild作业构建一个,其中CodeCommit存储库有一个S
CodeBuild
作业构建一个,其中CodeCommit
存储库有一个SAM
模板,如下所示,然后运行
sam构建和sam部署
从codebuild
作业
AWST模板格式版本:“2010-09-09”
转换:AWS::Serverless-2016-10-31
描述:用于部署Lambda函数的SAM模板示例。
资源:
#有关myDateTimeFunction Lambda函数的详细信息
myDateTimeFunction:
类型:AWS::Serverless::Function
特性:
处理程序:myDateTimeFunction.Handler
运行时:nodejs12.x
#为函数创建名为“live”的别名,并在更新函数时自动发布。
自动发布:实时
部署首选项:
#指定部署配置
类型:每2分钟线性10%
本文档页描述了相同的这是对我有效的解决方案 我使用CodeCommit作为源和构建阶段(无部署阶段)设置了一个管道 构建阶段读取buildspec.yml文件,该文件本身读取名为template.yml的SAM模板。SAM堆栈是通过CloudFormation创建的 我创建了一个s3存储桶来保存构建工件 以下是示例buildspec.yml文件:
version: 0.2
phases:
install:
commands:
- echo Nothing to do in the install phase...
pre_build:
commands:
- echo Nothing to do in the pre_build phase...
build:
commands:
- aws cloudformation package --template-file template.yml
--s3-bucket <bucketname>
--output-template-file newtemplate.yml
- aws cloudformation deploy --stack-name <stackname>
--capabilities CAPABILITY_IAM
--template-file newtemplate.yml
--role-arn arn:aws:iam::<account number>:role/CloudFormationServiceRole
post_build:
commands:
- echo Build completed
确保您为CloudFormation和CodeBuild IAM设置了正确的IAM策略。谢谢您的帮助,这已经让它更清晰了!您能否提供有关buildspec.yml文件内容的更多信息以运行“sam构建和sam部署”?如果我理解正确,我应该在codecommit中添加两个文件:-buildspec.yml以触发sam模板-sam.yml,其中包含您提供的代码是否正确?@Jarred correct,当您配置
codebuild
作业时,您只需使用命令sam build&&sam deploy
,假设您在codebuild的框上安装了cli,并且codebuild的IAM角色
具有必要的权限。
AWSTemplateFormatVersion : '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: CloudFormation Stack for the lambda function
Resources:
# Details about the Lambda function
<StackName>:
Type: AWS::Serverless::Function
Properties:
Handler: index.handler
Runtime: nodejs12.x
CodeUri: src/
# Creates an alias named "live" for the function, and automatically publishes when you update the function.
AutoPublishAlias: live
DeploymentPreference:
# Specifies the deployment configuration
Type: AllAtOnce
.
├── src/
│ ├── node_modules/
│ └── index.js
├── builspec.yml
└── template.yml