EC2 인스턴스 파이썬 라이브러리 빌드 방법

만두다섯개·2023년 12월 7일
0

호기심

목록 보기
6/29
post-thumbnail

이 방법은 효율적인 방법이 아니다. 그럼에도 불구하고 내 이해를 목적으로 작성한다.

람다 함수에서 특정 라이브러리를 사용하려고 한다.
이때, import 되지 않는 라이브러리 import 오류 해결 목적으로 라이브러리를 빌드하는 과정이다.

내 오류 상황 :

  • 람다 함수 실행 시, 소스코드에서 사용하는 PIL 모듈이 존재하지 않아 오류가 발생
    ⇒ 파이썬 기본 라이브러리와 AWS SDK(여기에서는 boto3)를 제외한 외부 라이브러리는 직접 추가해 줘야 함
    => 따라서 람다 실행환경과 동일한 환경에서 PIL 모듈을 빌드 후 람다 계층(레이어)로 등록한다.

1. PIL 모듈 빌드

  • 인스턴스 Bitvise로 인스턴스 SSH 접속

1. 파이썬 설치

이때 설치하는 파이썬이 사용하고자 하는 라이브러리 지원 여부 확인
나는 3.9 버전을 설치했다.

[root@ip-10-0-6-163 ec2-user]# sudo yum update -y
[root@ip-10-0-6-163 ec2-user]# sudo su
[root@ip-10-0-6-163 ec2-user]# yum install gcc bzip2-devel ncurses-devel gdbm-devel xz-devel sqlite-devel openssl-devel tk-devel uuid-devel readline-devel zlib-devel libffi-devel
[root@ip-10-0-6-163 ec2-user]# cd /home/ec2-user/
[root@ip-10-0-6-163 ec2-user]# wget https://www.python.org/ftp/python/3.9.0/Python-3.9.0.tar.xz
[root@ip-10-0-6-163 ec2-user]# ls
Python-3.9.0.tar.xz
[root@ip-10-0-6-163 ec2-user]# tar -xJf Python-3.9.0.tar.xz
[root@ip-10-0-6-163 ec2-user]# ls -l
total 18428
drwxr-xr-x 17 ec2-user ec2-user     4096 Oct  5  2020 Python-3.9.0
-rw-r--r--  1 root     root     18866140 Oct  5  2020 Python-3.9.0.tar.xz
[root@ip-10-0-6-163 Python-3.9.0]# ./configure --enable-optimizations
[root@ip-10-0-6-163 Python-3.9.0]# make altinstall
[root@ip-10-0-6-163 Python-3.9.0]# export PATH=$PATH:/usr/local/bin
[root@ip-10-0-6-163 Python-3.9.0]# pip3.9 install --upgrade pip

2. 모듈 설치

[root@ip-10-0-3-239 Python-3.9.0]# cd /usr/local/lib/python3.9/
[root@ip-10-0-3-239 python3.9]# pip3.9 install pillow
[root@ip-10-0-3-239 python3.9]# ls -l site-packages/

3. lambda_layers/~ 디렉터리 추가

[root@ip-10-0-3-239 python3.9]# mkdir -p /home/ec2-user/lambda_layers/python/lib/python3.9/site-packages

4. 파이썬 패키지 설치 디렉터리 복사 및 붙여넣기

[root@ip-10-0-3-239 python3.9]# cp -r site-packages/ /home/ec2-user/lambda_layers/python/lib/python3.9/
[root@ip-10-0-3-239 python3.9]# cd /home/ec2-user/lambda_layers

5. lambda_layers/~ 압축

[root@ip-10-0-6-163 lambda_layers]# zip -r lambda_layers.zip *
  • 압축파일인 lambda_layers.zip을 AWL CLI 명령어로 S3 버킷에 전송
  • 해당 객체를 바로 람다 함수 레이어 등록 또는 내려받아 등록한다.

2. PIL 빌드 S3 업로드

2-1. AWS CLI 으로 PIL 빌드 S3 업로드

  1. AWS 웹 콘솔에서 S3 버킷 생성, (EC2와 동일 리전에 S3 버킷 생성. 나는 ap-northeast-2 에 생성했다.)

  2. 사용하려는 AWS 계정에 AWS 계정 권한 AmazonS3FullAccess 권한 필요 (없다면 IAM - 사용자 - 계정이름 - 권한 - 권한 추가)

  3. AWS CLI 사용 목적으로 사용자 크리덴셜 등록

[root@ip-10-0-6-163 lambda_layers]# aws configure
AWS Access Key ID [None]: 사용자의 액세스 키
AWS Secret Access Key [None]: 사용자의 비밀 액세스 키
Default region name [None]: 발급받은 계정의 리전ID
Default output format [None]: json
  
  1. S3 버킷에 업로드
[root@ip-10-0-6-163 lambda_layers]# aws s3 cp ./lambda_layers.zip s3://버킷이름
upload: ./lambda_layers.zip to s3://버킷이름/lambda_layers.zip  # 버킷이 이상없이 업로드 된 것.  

3. S3에서 PIL 빌드 사용

  • AWS 웹 콘솔에서 해당 버킷으로 이동하면 업로드된 PIL 빌드를 그대로 람다 함수 레이어에 추가하거나, 다운로드 받아 람다 함수 레이어에 추가 가능하다.
profile
磨斧爲針

0개의 댓글