본문 바로가기
AWS

[AWS] Lambda 따라하기 (python) #2

by bryan.oh 2023. 1. 12.
반응형

지난 포스트에 이어서,

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] Cloud9 으로 Stable-Diffusion WebUI 띄워서 접속하기

728x90
반응형

댓글