일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 젠킨스
- Zeppelin
- login
- Mac
- EMR
- ec2
- 클러스터
- vue
- SpringBoot
- 자바
- aws
- gradle
- hive
- 머신러닝
- Redis
- 자동
- java
- Cluster
- 예제
- Docker
- Jenkins
- config
- Kafka
- 로그인
- 레디스
- 설정
- redash
- spring
- fastcampus
- 간단
- Today
- Total
코알못
[Lambda] 라이브러리 버전 변경 본문
AWS Lambda 를 이용하여 EMR 을 기동/중단하려고 하였으며
아래와 같이 Lambda 함수를 생성 하였다!
설정은 아래와 같이 Python 3.9를 사용 하였다
python 라이브러리중 boto3 를 사용하고자 하였으며 해당 라이브러리버전을 확인하기 위해 아래와 같이 코드를 작성 하였다.
import json
import boto3
client=boto3.client('emr')
s3=boto3.resource('s3')
emr_config_json=''
def lambda_handler(event, context):
return { 'statusCode': 200, 'body': boto3.__version__ }
적용을 위해 Deploy를 누르고 테스트를 위해 Test 버튼을 눌렀다.
로그를 보니 1.20.32 로 확인 되었으나 저자가 사용하고자 하는 버전은 1.26.80 이상이라 라이브러리 버전 업그레이드가 필요한 상황이였다.
이를 위해 Lambda Layer 를 이용하는 방법이 있어 아래와 같이 실습으로 알아보자!
라이브러리를 ZIP으로 압축하여 해당 ZIP 을 포함한 레이어를 생성하여 사용하고자 하는 함수에 해당 레이어로 업데이트 하면 된다.
1. 런타임 OS 확인
해당 작업은 런타임 OS 와 동일한 환경에서 하는것이 좋다고 하여 아래 사이트를 참고하여 사용한 런타임의 OS 를 확인 한다.
저자는 Python 3.9 이므로 Linux 2 를 사용하면 된다.
https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html
2. 런타임과 동일한 OS 로 EC2 생성
3. 생성한 EC2 에 라이브러리 설치 및 ZIP 으로 압축
저자는 python 3 버전이기에 아래와 같이 진행하였으며 boto 라이브러리 원하는 버전인 '1.26.92' 가 설치 되었다.
$ LIB_DIR=boto3-mylayer/python
$ mkdir -p $LIB_DIR
$ python3 -m pip install boto3 -t $LIB_DIR
Successfully installed boto3-1.26.92 botocore-1.29.92 jmespath-1.0.1 python-dateutil-2.8.2 s3transfer-0.6.0 six-1.16.0 urllib3-1.26.15
$ cd boto3-mylayer
$ zip -r /tmp/boto3-mylayer.zip .
4. 해당 ZIP 을 포함한 람다 레이어 생성하여 ARN 정보 얻기
아래 명령어로 레이어 생성하여 레이어의 ARN을 얻는다.
$ aws lambda publish-layer-version --layer-name boto3-mylayer --zip-file fileb:///tmp/boto3-mylayer.zip
2023-03-16T07:10:46.145+0000 arn:aws:lambda:ap-northeast-2:123:layer:boto3-mylayer arn:aws:lambda:ap-northeast-2:123:layer:boto3-mylayer:1 1
저자의 경우 'arn:aws:lambda:ap-northeast-2:123:layer:boto3-mylayer:1' 가 ARN 이다.
콘솔에서도 확인이 가능하며 AWS > Lambda > layer 또는 계층 > 생성한 레이어명 클릭 > 우측 상단에서 확인 가능하다.
5. 레이어를 적용 하고자 하는 함수 레이어 업데이트
$ aws lambda update-function-configuration --function-name <myfunction> --layers <layer ARN>
6. 확인
다시 Test 버튼을 눌러 로그를 확인하면 정상적으로 레이어가 적용 된것을 알 수 있다.
람다 함수의 '코드' 탭에 제일 하단에 가서도 레이어 적용 여부를 확인 할 수 있다.
끝!
'ETC' 카테고리의 다른 글
[Docker] Docker 빌드를 위한 Jenkins 활용 - Jenkins로 Docker 빌드 (0) | 2023.03.18 |
---|---|
[Docker] Docker 빌드를 위한 Jenkins 활용 - Jenkins 설치 (0) | 2023.03.18 |
[Docker] Docker 빌드를 위한 Jenkins 활용 - 도커 이미지 빌드 (0) | 2023.03.15 |
[Docker] Docker 빌드를 위한 Jenkins 활용 - 준비 (0) | 2023.03.13 |
[Docker] Docker Compose 란? (0) | 2022.12.09 |