API Gateway에 연결된 lambda에서 이미지를 처리하는 라이브러리인 PIL을 사용하려는 중 아래의 에러를 마주했다.
cannot import name '_imaging' from 'PIL'
구글에 검색해보니 pillow 패키지의 compiled binaries 파일을 lambda가 처리하지 못해서 생기는 에러라고 합니다
복잡한 해결법을 찾았는데 그보다 더 쉽게 해결할 수 있어서 정리한다.
복잡쓰한 해결법 보러가기!
Don't reinvent the wheel. (바퀴를 재발명하지 마라)
다른 사람이 만든 pillow 패키지가 포함된 layer를 추가 해주기만 하면 된다!!
https://api.klayers.cloud/api/v2/p3.9/layers/latest/ap-northeast-2/html 에서 자기가 추가하고 싶은 패키지의 arn을 알아낸다.
(p3.9를 바꾸면 다른 버전의 파이썬도 확인할 수 있다.)
지금은 pillow 패키지가 필요하니 arn:aws:lambda:ap-northeast-2:770693421928:layer:Klayers-p39-pillow:1 을 복사한다.
lambda 함수로 가서 맨 아래 Layers에 Add a layer를 누른다!
Specify an ARN을 누르고 아까 복사했던 arn을 붙여넣는다.
Add를 누른다. 끝 -
lambda에 custom layer 적용하기
ARN of Python Packages as Lambda Layers
흑....감사합니다
고생하고 있엇는데...ㅠㅠㅠㅠ