본문 바로가기
Dev/AWS

[Error] 람다 별칭 사용 시 별칭 버전 불일치로 인한 배포 실패 해결

by 싯벨트 2025. 2. 14.
728x90

배포 간 아래와 같은 오류를 맞이했다. 

Resource handler returned message:
"Deployment failed with deployment id - d-{배포아이디}. Rollback successful"
(RequestToken: 61854c73-2633-2632-4163-65c205305e20,
HandlerErrorCode: InternalFailure)

 

정확한 파악을 위해 먼저 CloudFormation에서 실패한 스택을 살펴봤다.

이벤트 로그를 살펴보고 "근본 원인 보기"에서 문제가 되는 단계를 확인했다.

The deployment failed because the number of requests by the IAM role arn:aws:iam::{your_aws_id}:role/{your-stack-name}-CodeDeployServiceRole-MK9kE5movrNL exceeded the request limit for AWSLambda. Avoid retrying API requests at a high rate.

 

배포 과정에서 너무 많은 요청을 보냈다는 에러다. 배포방식은 Canary 10% 10 minutes 으로 설정했었기 때문에 적절한 세팅이었고, 과도한 API 호출에 대한 원인을 찾기 위해 정보를 더 찾아봐야했다.

 

CodeDeploy 서비스에서 오류 문구에서 봤던 배포 아이디를 입력해봤다. 검색된 배포 아이디를 눌러서 세부화면을 확인하면, 계정 세부 정보에 계정 위치가 있다. 링크를 타고 들어가서 해당 페이지의 앱 사양을 보면 아래처럼 람다가 해당 배포가 수행하려는 동작을 볼 수 있다.

이제 원인을 파악할 수 있는 힌트를 얻었다. 배포에서 실행했던 동작은 람다 별칭의 버전을 2에서 3으로 업데이트 하는 것이었고, 실제로 해당 람다를 확인하니 총 버전은 4였지만 버전 1로 고정되어 있었다. 그래서 이것을 배포과정에서 인식된 현재 버전인 2로 수동으로 바꿔주고 배포를 다시 진행하니 정상적으로 실행됐다. 

{
  "version": "0.0",
  "Resources": [
    {
      "your-lambda-function": {
        "Type": "AWS::Lambda::Function",
        "Properties": {
          "Name": "your-lambda-function",
          "Alias": "latest",
          "CurrentVersion": "2",
          "TargetVersion": "3"
        }
      }
    }
  ],
  "Hooks": []
}