首页 > 解决方案 > 即使在 CodeBuild Pipeline 成功执行后,Lambda 函数也不会更新

问题描述

最近在 AWS 上设置了一个基本 CodePipeline(遵循本指南:https ://docs.aws.amazon.com/lambda/latest/dg/build-pipeline.html ),当 CodeCommit 存储库上有新提交时触发.

但即使在管道成功执行后,lambda 函数也不会更新。

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

我的 buildspec.yml:

version: 0.2
phases:
  install:
    runtime-versions:
        nodejs: 12
  build:
    commands:
      - npm install
      - export BUCKET=xx-test
      - aws cloudformation package --template-file template.yaml --s3-bucket $BUCKET --output-template-file outputtemplate.yml
artifacts:
  type: zip
  files:
    - template.yml
    - outputtemplate.yml

我的模板.yaml:

AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: >
  helloWorld
  API Gateway connectivity helloWorld
  
Globals:
  Function:
    Timeout: 3

Resources:
  HelloWorldFunction:
    Type: AWS::Serverless::Function
    Properties:
      CodeUri: ./
      Handler: app.lambdaHandler
      Runtime: nodejs12.x
      Events:
        HelloWorld:
          Type: Api
          Properties:
            Path: /hello
            Method: get

是否需要进行任何其他配置?

标签: amazon-web-servicesaws-lambdaamazon-cloudformationaws-codepipelineaws-code-deploy

解决方案


从您发布的内容来看,您的最后一个操作似乎是CHANGE_SET_REPLACE?如果是这样,这将解释为什么您的 lambda 函数没有更新。也就是说,这只会创建一个变更集,但不会执行它。换句话说,它不适用。

您需要在操作之后添加新操作CHANGE_SET_REPLACE,这称为CHANGE_SET_EXECUTE. 此操作将采用由 创建的更改CHANGE_SET_REPLACE,并将其实际应用到您的堆栈。

完成您提供的教程的部署阶段中描述了如何添加此类操作:

更改集允许您在进行更改之前预览所做的更改,并添加批准阶段。添加执行更改集的第二个操作以完成部署


推荐阅读