안녕하세요.
이번 시간에는 파이썬의 필요한 라이브러리를 S3에 저장하여 Layer를 통해 Lambda에 적용하는 실습을 진행하겠습니다.
실습에 사용하는 EC2는 최소 사양으로 ubuntu 20.04 LTS를 사용하였습니다.
이번 실습은 리눅스 환경에서 S3에 파일을 업로드 후 진행하는 실습입니다.
[AWS] AWS Lambda에 대해 알아보고 Python 외부 모듈 적용하기 (tistory.com)
Windows 환경에서 실습을 진행하고싶으시면 위의 링크에서 진행해 주시면 되겠습니다.
1. AWS CLI 설정하기
1. 패키지 저장소 업데이트 및 AWS CLI 설치하기
$ sudo apt update
$ sudo apt install awscli -y
2. AWS CLI Configure
$ aws configure
AWS Access Key ID [None]: <내 Access Key 입력>
AWS Secret Access Key [None]: <내 Secret Access Key 입력>
Default region name [None]: ap-northeast-2
Default output format [None]: <Enter>
AWS CLI를 설치한 후 aws configure 명령어를 통해 자격 증명을 설정합니다.
2. S3 버킷 생성하기
AWS CLI에 configure로 등록한 계정에서 S3를 생성합니다. 다음과 같이 다른 설정 없이 S3 버킷 이름만 지정한 후 생성해 줍니다.
$ aws s3 ls
aws s3 ls 명령어를 통해 awscli로 생성된 버킷을 확인합니다.
3. pip 및 zip 설치하기
$ sudo apt install python3-pip -y
$ sudo apt install zip -y
# 종속성 에러 발생시
$ sudo apt-get update
Lambda에 라이브러리를 업로드할 때 라이브러리를 zip으로 압축해서 업로드를 해야 하기 때문에 zip까지 설치합니다.
4. 가상 환경 설치하기
$ sudo apt install python3.8-venv
$ python3 -m venv venv
$ source venv/bin/activate
$ mkdir python
$ cd python
5. 필요한 라이브러리 설치 및 압축하기
$ pip install datetime -t .
# requirements.txt 가 있다면
$ pip install -r requirements.txt -t .
$ cd ..
$ sudo zip -r python.zip python
필요한 라이브러리를 설치해 줍니다. Lambda에서는 라이브러리에 용량 제한이 걸려 있기 때문에 설치하는 라이브러리가 많다면 dist 등 필요 없는 파일은 삭제해 주어도 괜찮습니다. 라이브러리 설치 후 홈으로 돌아가서 python 디렉터리를 zip으로 압축합니다.
6. EC2에서 S3에 업로드하기
# aws s3 cp <내 파일> <S3 URI>
$ aws s3 cp python.zip s3://hyuk-s3-bucket
다음 awscli 명령어를 통해 EC2에 있는 파일을 S3로 복사합니다.
다음과 같이 S3로 python.zip 파일이 업로드 된 것을 확인할 수 있습니다.
Lambda에 python.zip 파일을 적용하기 위해 체크한 후 URL 복사를 선택합니다.
7. Lambda 생성 후 라이브러리 적용하기
다음과 같이 런타임을 설정한 후 저장을 합니다. ubuntu 20.04 LTS는 기본적으로 파이썬 3.8.10을 사용하고 있기 때문에 파이썬 버전이 다르면 최신 버전의 라이브러리가 지원되지 않는 등의 문제가 발생할 수 있기 때문에 버전을 맞춰주셔야 합니다.
1. Layer를 사용하지 않고 S3 위치 직접 업로드하기
다음과 같이 Lambda 함수 우측 상단에 있는 업로드 버튼을 통해 S3 위치에 있는 라이브러리를 직접 업로드할 수 있습니다.
2. Layer를 사용하여 S3 위치 업로드하기
다음과 같이 Layer를 생성할 때 S3에서 파일 업로드를 선택하고 런타임 또한 지정하여 생성합니다.
다음과 같이 생성한 계층을 Lambda에 적용할 수 있습니다. 계층(Layer)는 직접 업로드하는 방식과 다르게 생성하면 비용이 부과되기 때문에 테스트로 생성하셨다면 꼭 리소스를 지워주시기 바랍니다.
8. 라이브러리 적용 확인하기
import json
from datetime import datetime
def lambda_handler(event, context):
print(datetime.now())
# TODO implement
return {
'statusCode': 200,
'body': json.dumps('Hello from Lambda!')
}
다음과 같이 datetime 라이브러리를 호출한 후 Deploy를 눌러 배포합니다. 그 후 Test 케이스를 생성한 후 Test 버튼을 누르면 Lambda 함수 안에서 자체적으로 테스트해 볼 수 있습니다.
다음과 같이 CloudWatch Logs를 확인하여 실제로 라이브러리가 적용되었는지 확인해볼 수 있습니다. 현재 시간은 15시 46분이지만 Lambda에서는 기본적으로 표준시를 따르고 있기 때문에 한국 시간으로 바꿔주기 위해서는 datetime의 지역을 지정해주어야 합니다.
이번 시간에는 파이썬의 필요한 라이브러리를 S3에 저장하여 Layer를 통해 Lambda에 적용하는 실습을 진행해 봤습니다.
감사합니다.
'Cloud > Amazon Cloud' 카테고리의 다른 글
[AWS] CodePipeline에서 다른 VPC에 있는 사내 GitLab에 연동하는 방법 (0) | 2024.06.26 |
---|---|
[AWS] Lambda를 이용한 Serverless 형태의 Slack 챗봇 사용하기 - 2 (0) | 2023.11.30 |
[AWS] Lambda에서 Timeout 걸릴 때 해결 가능한 방법 알아보기 (0) | 2023.11.30 |
[AWS] Lambda에서 Slack 이벤트 Payload를 JSON 형태로 사용하기 (0) | 2023.11.30 |
[AWS] Lambda를 이용한 Serverless 형태의 Slack 챗봇 사용하기 - 1 (0) | 2023.11.30 |
클라우드, 개발, 자격증, 취업 정보 등 IT 정보 공간
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!