Amazon web services 如何设置从代码提交到Lambda函数的自动部署?

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

我试图将CodeCommit存储库的内容“部署”到Lambda函数(而不是应用程序)。 在这种特殊情况下,它是从源到目标的简单复制/粘贴

我正在努力找到一个解决方案,不涉及设置另一个lambda函数。据我所知,有一个解决方案使用代码构建和CloudFormation

有人能解决这个问题吗?或者,你能指出一些好的文档吗

附言:

我在StackOverflow上找到了似乎可以回答我问题的答案,但相关答案中的链接已经过时。

您可以使用
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