amazon-web-services - 即使在 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
是否需要进行任何其他配置?
解决方案
从您发布的内容来看,您的最后一个操作似乎是CHANGE_SET_REPLACE
?如果是这样,这将解释为什么您的 lambda 函数没有更新。也就是说,这只会创建一个变更集,但不会执行它。换句话说,它不适用。
您需要在操作之后添加新操作CHANGE_SET_REPLACE
,这称为CHANGE_SET_EXECUTE
. 此操作将采用由 创建的更改CHANGE_SET_REPLACE
,并将其实际应用到您的堆栈。
完成您提供的教程的部署阶段中描述了如何添加此类操作:
更改集允许您在进行更改之前预览所做的更改,并添加批准阶段。添加执行更改集的第二个操作以完成部署。
推荐阅读
- angular - How does mat-autocomplete classList Input work?
- php - 使用 NICE 值运行 php-fpm 池
- javascript - 在 React 中将数据传递给组件(道具)
- laravel - 关于在 Laravel 中使用 Upsert 时插入关系的问题
- sql - 您可以在窗口函数中包含除法吗(红移)
- angular - 当 observable 以角度执行完所有步骤时,如何执行一段代码?
- redux - 将所有 saga 动作包装在一个通用的生成器函数中
- angular - 如何设置父组件的样式取决于角度的子组件?
- javascript - 这会抛出我 string null is not assignable to type string 错误
- php - PDO Exception : 尝试绑定参数号 65536。SQL Server 最多支持 2100 个参数