'프로그래밍/AWS'에 해당되는 글 1건

  1. 2024.02.06 :: Cloud9로 AWS Lambda Layer 만들기(python)
프로그래밍/AWS 2024. 2. 6. 10:59

aws 람다에서 사용할 계층을 만들며 고생한 것을 정리한 것입니다.

 

윈도우 환경에서 개발중인데, 일부 패키지들은 OS에 따라 구성이 다르기때문에 Lambda에서 사용할 수 없습니다.

 

이 문제를 해결하기 위한 Docker 사용 등 다른 방법도 있지만 AWS Lambda와 환경이 같은 Cloud9을 이용해서 layer에 사용할 패키지를 설치하는게 가장 깔끔하겠다고 생각해서 이 방법으로 진행했습니다.

 

Cloud9 세팅

AWS Cloud9 환경 생성

 

기본 세팅으로 생성해줍니다.

 

Cloud9 IDE 실행

 

터미널 창 열기

 

 

필요한 파이썬 버전 설치

파일 내려받기

wget https://www.python.org/ftp/python/3.12.0/Python-3.12.0.tgz

저는 파이썬3.12.0 버전을 사용했고, 필요한 버전으로 변경해서 사용하면 됩니다.

필요한 버전 파일 확인은 여기서.
https://www.python.org/ftp/python/

파일 추출

tar xvf Python-3.12.0.tgz

설치

cd Python-*/
./configure --enable-optimizations
sudo make altinstall

1 파이썬 디렉토리로 이동

2 최적화

3 기존 설치 버전을 덮어쓰지 않고 설치

시간이 좀 걸립니다.

설치 확인

python3.12 -V

정상적으로 설치되었다면 버전을 확인할 수 있습니다.

 

패키지 설치

가상 환경 생성

cd ..
mkdir packaging
cd packaging
python3.12 -m venv layer_package

1 디렉토리 이동

2 packaging 디렉토리 생성

3 디렉토리 이동

4 가상 환경 생성

 

가상 환경 활성화

source layer_package/bin/activate

패키지 설치

pip install firebase-admin

필요한 패키지를 설치합니다.

저는 lambda에서 fcm을 보내기 위해 firebase-admin을 설치했습니다.

 

firebase-admin의 경우 호환성 관련 에러로 인해 특정 패키지를 다운그레이드 해줬습니다.

pip install cryptography==3.4.8

가상 환경 비활성화

deactivate

패키지 압축

mkdir python
cp -r layer_package/lib/python3.12/site-packages/* python/
zip -r lambda_layer.zip python

1 디렉토리 생성

2 패키지 아카이브

3 압축

다운로드

명령줄로 layer를 만들어 줄 수있지만, 그냥 다운로드 받아서 콘솔에서 업로드 해주었습니다.

 

끝.

 

 

도움되셨다면 하트 눌러주세요!

 

 

참고한 글 목록

https://awstip.com/create-aws-lambda-layers-using-cloud-9-694895903ca5 - 전체적인 방법

https://github.com/pyca/cryptography/issues/9060 - 호환성 에러 관련

posted by Luen
: