반응형
1. lambda 란?
간단하게 서버리스로 코드를 실행할 수 있는 aws 컴퓨팅 서비스라고 할 수 있다.
2. lambda 를 왜 쓰는가?
프로그램 실행을 위한 런타임 환경이나 실행가능한 서버가 필요없다. - 서버리스
동시성등을 고려한 개발을 프로그래머가 직접 해줄 필요가 없다 - 옵션 에서 동시성이나 병렬 제어가 가능하기 때문에
모니터링이 편하다.
데이터 엔지니어 입장에서 aws lambda 를 통한 스트리밍 처리도 가능하다고 생각한다. (허용되는 데이터 발생량이나 규모에 따라)
3. lambda 만들기
람다는 웹 콘솔에서 GUI 로도 손쉽게 만들 수 있다.
하지만 이번 포스팅은 로컬 서버에서 aws cli 를 이용하여 lambda 함수를 만들어 본다.
실습 예제는 aws 공식 홈페이지에 나와있는 내용들이다. ( 공식 홈페이지 가이드가 더 내용이 풍부하니까 그 쪽을 먼저 보길 바란다)
a) 사전 준비 (시간이 부족해서 생략)
- 로컬 PC 에서 aws cli 가 설치 및 IAM 구성이 되어 있어야 한다.
- lambda 생성과 실행 등 필요한 IAM 권한이 미리 준비되어 있어야 한다 .
- 실행권한 arn 이 필요하다.
b) lambda 생성
# 워킹 디렉토리 생성 및 이동
$ mkdir lambda_python_sample
$ cd lambda_python_sample
# 람다 코드 작성
$ vi lambda_function.py
# 사용되는 패키지를 working 디렉토리에 다운로드
$ pip install --target ./package requests
$ cd package
# 패키지 압축
$ zip -r ../jssvs-development-package.zip .
# lambda 코드 압축
$ zip -g jssvs-deployment-package.zip lambda_function.py
# lambda 생성 명령어 - 함수이름, 압축 파일 경로, 이벤트 핸들러 명(function 이름) # 역할 arn 순으로.
$ aws lambda create-function --function-name lambda-jssvs-dev \
--zip-file fileb://[home dir]/WorkSpace/aws/lambda_python_sample/jssvs-deployment-package.zip \
--handler lambda_function.main --runtime python3.7 \
--role arn:aws:iam::[ars code]:role/gamebi-lambda-role
-- lambda 코드
import requests
def main(event, context):
response = requests.get("https://www.test.com/")
print(response.text)
return response.text
if __name__ == "__main__":
main('', '')
c) lambda 실행
# 기본 실행 및 출력
$ aws lambda invoke --function-name lambda-jssvs-dev out \
--log-type Tail --query 'LogResult' --output text | base64 -d
lambda 의 출력 포맷은 base64로 인코딩 되어 있기 때문에, 우리가 보려면 base64 로 디코딩 해야 한다.
d) lambda 삭제
$ aws lambda delete-function --function-name lambda-jssvs-dev
e) lambda 리스트 조회 및 검색
# 검색
$ aws lambda list-functions --max-items 10
# 조회
$ aws lambda get-function --function-name lambda-jssvs-dev
** lambda 기본적으로 지원할 것 같지만 지원하지 않는 라이브러리들이 (requests 등 ) 있기 때문에, 개발자가 직접 소스를 올려줘야 한다.
** 웹 콘솔에서는 레이어 라는 이름으로 외부 패키지나 라이브러리를 올려서 사용할 수 있다.
** 함수를 생성할때 파이썬 버전은 꼭 맞춰주길 바란다. (다른 언어도 마찬가지. )
반응형
'Cloud Platform Service' 카테고리의 다른 글
AWS Kinesis(키네시스)를 이용한 간단한 파이프 라인 구성 (0) | 2021.06.08 |
---|---|
AWS CLI 설치 및 s3 관련 기본 명령어 (0) | 2021.05.31 |
GoogleCloudSDK (1) (0) | 2018.10.27 |