Lambda는 앞에서도 계속 말했지만, 엄청난 독립성 때문에 환경을 공유하고 이런 것이 EC2와는 다르게 불가능합니다.
만약 공통된 20개의 Python Lambda Function에 대해서 pandas, sckit learn... 등이 필요하다고 해 봅시다. 이를 모든 Lambda에 깔아주는 일은 매우 번거롭고 비효율적입니다.
그래서 일반적으로는 위와같이 zip파일을 업로드해야 합니다. 이를 20개에 대해서 zip파일을 다 만들면 너무 복잡한 일이 됩니다.
그래서 저희는 Layer를 사용해서 이를 Lambda아래에 붙이는 과정을 거쳐서 간단히 해결할 수 있게 됩니다. 우선 python_package라는 폴더를 만들고 여기서 간단히 requests모듈과 의존성들을 pip install을 통해 설치해 주도록 하겠습니다.
$ pip install requests -t .
위 명령어를 통해 의존성을 깔고, python_pacakge를 zip파일로 아래와 같이 묵고 계층 구성에 업로드 합니다.
위와 같이 계층을 만들었다면 아래와 같이 앞에서 만든 function Lambda Function에 부착해주겠습니다.
function Function
import json
import os
import requests
def lambda_handler(event, context):
# TODO implement
print(os.getenv("secret"))
return 1
# return {
# 'statusCode': 200,
# 'body': json.dumps('Hello from version2!')
# }
이와 같이 requests모듈을 불러오고 Deploy후 Test하고 오류가 안뜨는 것을 확인할 수 있습니다.
다음 시간에는 이와 같이 Lambda의 Stateless한 특성을 보다 Statefull하게 만들어주는 EFS에 대해 알아보도록 하겠습니다.
'DevOps > AWS Architecture' 카테고리의 다른 글
[ DevOps ] - (AWS Lambda) Step Functions 권한 설정 (0) | 2022.07.20 |
---|---|
[ DevOps ] - (AWS Lambda) EFS 파일시스템 생성 + 연동 (0) | 2022.07.20 |
[ DevOps ] - (AWS Lambda) 환경변수 설정 (0) | 2022.07.19 |
[ DevOps ] - (AWS Lambda) 버전관리와 Alias (0) | 2022.07.19 |
[ DevOps ] - (AWS Lambda) 스케일링과 동시성 (0) | 2022.07.19 |