aws lambda exec format error 처리법

JaeKwon Jin·2023년 2월 14일

aws lambda를 도커 이미지로 쓰는데,
amazon/aws-lambda-nodejs:16으로 잘 쓰고 있다가
오늘 갑자기 Internal Server Error 가 나는게 아닌가?

{
  "errorType": "Runtime.InvalidEntrypoint",
  "errorMessage": "RequestId: e38a5180-079b-4c73-86a3-9512f2798da3 Error: fork/exec /lambda-entrypoint.sh: exec format error"
}

하루종일 끙끙대면서 뭐가 잘못되었지 구글링도 해보고,
하다가 안돼서 chatGPT 한테도 물어보다가,
외국의 한 블로그에서 힌트를 얻었다.
https://nickjanetakis.com/blog/fixing-exec-format-errors-with-docker-entrypoint-scripts-on-windows

위에서 보면

If I’ve learned anything from working as a web developer for the last ~20 years, it’s that you should never trust anything from the client

절대 믿지마라는 건데,
그래서 다른 것들에서 저런 에러는 퍼미션 문제다 이런 말을 본 거가 생각나서,

docker build 어쩌구 저쩌구
docker buildx build 어쩌구 저쩌구

로 바꿨더니 해결이 되었다.
의심가는 것은 도커 버전이 바뀌면서 저걸 명시적으로 해주지 않으면
M1 맥에서 x64 인텔 버전 도커 이미지가 제대로 생성되지 않는게 아닌가 추정만한다.
어쨌든 돌리긴 했는데
이번 기회에 ARM64 버전으로 도커 이미지를 바꿀까 하는데
또 숨은 복병이
amazon/aws-lambda-nodejs 가 arm64 버전이 없는 거 같다.
이러면 또 다시 밑에서부터 만들어서 쓰라는 건데
흠... 좀 더 지켜보고 생각할 예정이다.
아직 그렇게 서버 비용이 많이 나오지 않으니
추후에 기다리면 arm64용 이미지를 아마존에서 제공하면 해결될 일인데,
언제까지 기다려야 할지는 모르겠지만,
아직은 우선순위에 올려놓지는 않고 기다려 보련다.

.......

해결되서 뿌듯하긴 한데 허탈하다.
사실 이런 것을 포기하지 않고 끈기있게 해낼 수 있어야
개발자라란 직업이 적성에 맞는게 아닐까 싶다.

그리고, 귀찮지만, aws lambda도 dev 환경을 꼭 만들자.
그래야 live환경에 갑자기 서버 에러나는 황당함을 피할 수 있다.

profile
중년개발자

0개의 댓글