본문 바로가기
개발/AWS

[AWS] CloudFormation Lamda UPDATE_FAILED 에러

by mixxeo 2024. 5. 13.

회사 프로젝트의 대부분은 serverless 프레임워크로 운영하고있다.

최근에 마지막 배포가 1년도 더 이전인 프로젝트를 수정할 일이 있었는데, 작업을 하고 배포를 하려고하니 CI에서 이런 에러가 나면서

배포가 실패했다.

Stack:arn:aws:cloudformation:--- is in UPDATE_ROLLBACK_FAILED state and can not be updated.

 

 

 

CloudFormation 콘솔에서 확인해보니(Stacks > Stack details > Events) 배포에 실패한 람다 함수 이름이 CustomDashresourceDashexistingDashs3LambdaFunction 이고, 업데이트 실패 사유가 이렇게 나와있었다.

 

The runtime parameter of nodejs12.x is no longer supported for creating or updating AWS Lambda functions. We recommend you use the new runtime (nodejs18.x) while creating or updating functions

 

 

 

serverless.yml 파일을 확인해봤는데 우리 프로젝트에는 저런 이름의 람다 함수도 없고 런타임도 nodejs16 버전으로 명시되어있었다..

저 람다 함수를 구글링하다가 serverless 레포 깃헙 이슈를 발견했는데 serverless 공식문서에 따르면

Using the existing config will add an additional Lambda function and IAM Role to your stack.
The Lambda function backs-up the Custom S3 Resource which is used to support existing S3 buckets.

이미 만들어져있는 s3 버킷 이벤트에 대한 핸들러를 배포하는 옵션 (existing: true)을 사용하면 백업을 위한 람다 함수가 추가로 생성된다고하고, 이 함수의 이름이 CustomDashresourceDashexistingDashs3 인것이다.

 

그리고 이렇게 자동 생성되는 람다는 serverless.yml의 런타임 버전이 아니라 serverless 프레임워크의 default 런타임을 사용해서 설정 파일로는 변경이 불가능했고 23년 3월31일부터 aws lambd가 node12 버전 지원을 중단해서 배포 에러가 발생하는 상황이었다.

 

 

 

여러 문제가 섞여있어서 원인파악까지 시간이 좀 걸렸지만 serverless 버전을 v3(default runtime: node14)로 업데이트하니 해결됐다!