지난 포스트에 이어서,
Lambda 함수 생성 > 새로 작성 > zip 업로드(library 포함)
을 진행 해보도록 하겠습니다.
"함수 생성" 을 눌러서 Lambda 함수를 생성합니다. (여기까지 오는 방법을 모르시면 지난 포스트를 보세요~)
저는 지난 포스트에서 작성했던 hello-bryan 함수에 설명을 이어서 하겠습니다.
우측에 "에서 업로드" 버튼이 있습니다. 옵션으로는 ".zip파일", "Amazon S3 위치"가 있네요.
".zip 파일" 을 사용할 것이지만, 먼저 zip 파일을 만들어야 겠습니다.
1. Python 코드 작성
외부 라이브러리를 써봐야 겠는데요.
흔히 사용하는 requests 를 사용하겠습니다.
우선 소스코드는 아래와 같이 동작을 합니다.
- url 은 album 정보가 있는 100개의 리스트를 리턴합니다.
- 파라메터가 없을 땐 album 의 count를 리턴합니다.
- 파라메터(album_id) 가 있을 땐 앨범을 찾고 있다면 정보를 리턴, 없다면 메시지를 리턴합니다.
윈도우는 탐색기 띄우고 하셔도 됩니다. 폴더 하나 만들고, lambda_function.py 만들어서 아래 코드를 입력하면 됩니다.
A. 터미널 실행
B. 폴더 생성
$ mkdir hello-bryan
$ cd hello-bryan
$ vi lambda_function.py
# i 눌러서 입력모드
# 아래 python 소스코드 복붙
# esc키 누르고 :wq 입력하고 앤터
# visual studio code 열어서 입력하고 저장해도 됩니다
lambda_function.py
import json
import requests
def lambda_handler(event, context):
url = 'https://jsonplaceholder.typicode.com/albums'
response = requests.get(url)
status_code = response.status_code
body = response.reason
if status_code == 200:
album_list = json.loads(response.content)
body = f'album count = {len(album_list)}'
if 'album_id' in event:
album = next(filter(lambda x: x['id'] == event['album_id'], album_list), None)
body = album if album else f'not found album id : {event["album_id"]}'
return {
'statusCode': status_code,
'body': json.dumps(body)
}
지금까지의 폴더 구조는
hello-bryan > lambda_function.py 입니다.
lambda_function.py 가 있는 폴더에서 아래 명령어를 실행해서 라이브러리를 다운로드 합니다.
윈도우는 cmd 에서 하면 됩니다.
윈도우든 mac 이든 python, pip 가 실행되는 환경 이어야 합니다.
pip3 install requests -t .
마지막에 . 은 target 경로 입니다. 현재폴더를 가리키죠.
이렇게 설치 되고, 폴더를 확인해 보면, 아래와 같이 requests 에 필요한 파일들이 다운로드 되었습니다.
이제 zip 파일로 압축을 하면 됩니다.
zip -r hello-bryan.zip .
그럼 hello-bryan.zip 파일이 생성됩니다.
이제 AWS Lambda service 화면에서 봤던 "에서 업로드" > ".zip 파일" 을 클릭합니다.
zip 파일을 선택해 줍니다. 그리고 "저장" 클릭
로딩이 되면 아래와 같은 화면이 뜹니다. "ok" 를 눌러줍니다.
Test
그리고 "Test" 버튼을 눌러서 실행합니다.
정상 적으로 실행 되고, 파라메터에 album_id 를 추가하지 않았기 때문에 카운트를 반환 합니다.
파라메터를 입력해 보겠습니다.
Configure test event 를 누르고 파라메터를 수정 합니다. "저장" 을 눌러서 저장합니다
그리고 다시 "Test"를 클릭하여 실행
원하는 결과가 나왔습니다.
이렇게 3rd party library 를 사용해서 lambda 함수를 실행해 봤습니다.
다음은 Docker image 를 이용해서 lambda 를 실행해 보는 것을 해보겠습니다~
AWS Lambda 따라하기
[AWS] Lambda 따라하기 (python) #1
[AWS] Lambda 따라하기 (python) #2
[AWS] Lambda 따라하기 (python) #3 container 사용
[AWS] Lambda 따라하기 (python) #4 Trigger (HTTP API)
[AWS] Lambda 따라하기 (python) #5 Trigger (REST API)
[AWS] Lambda 따라하기 (python) #6 Scheduler
'AWS' 카테고리의 다른 글
[AWS] Lambda 따라하기 (python) #6 Scheduler (2) | 2023.01.24 |
---|---|
[AWS] Lambda 따라하기 (python) #5 Trigger (REST API) (0) | 2023.01.24 |
[AWS] Lambda 따라하기 (python) #4 Trigger (HTTP API) (0) | 2023.01.24 |
[AWS] Lambda 따라하기 (python) #3 container 사용 (2) | 2023.01.13 |
[AWS] Lambda 따라하기 (python) #1 (0) | 2023.01.11 |
댓글