본문 바로가기

Amazon AWS/Lambda4

도커 컨테이너 이미지로 Lambda 함수 배포 Lambda에서 컨테이너 이미지를 사용하는 방법에는 세가지가 있으며, Python을 기준으로 설명한다. Lambda용 AWS 기본 이미지 사용 언어 runtime 지정됨 운영체제: Amazon Linux 2(Python 3.8 ~), Amazon Linux(Python 3.7) 런타임 인터페이스 클라이언트/에뮬레이터 포함 사용자 지정 런타임용 AWS 기본 이미지 사용 사용자가 runtime 설정 운영체제: Amazon Linux 또는 Amazon Linux 2 런타임 인터페이스 에뮬레이터 포함 Lambda 호환을 위해 런타임 인터페이스 클라이언트를 포함 시켜야함 AWS 이미지가 아닌 별개 이미지 사용 런타임, 운영체제 모두 사용자 지정 로컬 테스트를 하려면 런타임 인터페이스 에뮬레이터를 포함 시켜야함 (.. 2023. 10. 15.
Lambda 이용해서 Cloudwatch Error 로그를 Slack으로 알림 보내기 Lambda를 작성하기 전에 알림을 보내고자 하는 슬랙 채널에 Webhook을 생성해야 한다. Webhook 생성방법은 아래의 블로그 글을 참고 했다. https://velog.io/@king/slack-incoming-webhook Lambda 생성 Lambda를 새로 생성한다. 여기서는 Python을 이용해서 코드를 작성할 예정이므로, Pyhon 버전을 3.9로 선택했다. IAM Role은 아래 정책을 포함하도록 만들어준다. 다수의 클라우드워치를 트리거로 설정할 예정이므로 클라우드워치 전체 엑세스 권한을 주었다. { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:*" ], "Resource": "arn:aw.. 2023. 9. 7.
FastAPI, Request Body를 Class 없이 그대로 사용하기 일반적으로 FAST API에서 Post 메소드는 아래의 예제와 같이 BaseModel을 상속받아서 Request Body 데이터모델을 클래스로 선언해준다. from typing import Union from fastapi import FastAPI from pydantic import BaseModel class Item(BaseModel): name: str description: Union[str, None] = None price: float tax: Union[float, None] = None app = FastAPI() @app.post("/items/") async def create_item(item: Item): return item 그런데 상황에 따라서 Request Body의 값을 .. 2023. 1. 8.
AWS Lambda에서 파이썬 모듈 추가하기 Python과 NodeJS의 경우에는 AWS Lambda 콘솔에서 코드를 작성하고 편집 할 수 있다. 콘솔에서 작성한 파이썬 코드를 배포하고 실행하다 보면, 아래와 같은 에러가 발생할 때가 있다. [ERROR] Runtime.ImportModuleError: Unable to import module 'lambda_function': No module named 'requests’ 이런 에러가 발생한 원인은 코드를 실행할 때 필요한 모듈이 없기 때문이다, 해결방법 필요한 모듈을 로컬에서 특정 디렉토리 위치에 설치해준다. #디렉토리 생성 및 이동 mkdir python cd python/ #모듈 설치 $ pip install requests -t . # 디렉토리 압축, 명령어로 해도 되고 직접 마우스로 해.. 2022. 12. 11.