aws lambda 개념

2023. 7. 6. 16:29AWS

구조)  lambda triger --> lambda fuction  --> lambda target 

 

1) Lambda triger

 

3가지 호출 방법이 있다.


ㄱ.. 동기화 호출 : api g/w -> /order -> lambda
ㄴ. 비동기호출 : event(sns ,s3) --> fn
ㄷ.stream(polll-based) : dynamodb,kinesis -> change -> fn

 

AWS Lambda는 다양한 트리거를 지원하여 함수를 실행할 수 있습니다. 몇 가지 주요한 트리거 유형은 다음과 같습니다

  1. 이벤트 트리거: 다양한 AWS 서비스에서 발생하는 이벤트를 기반으로 Lambda 함수를 실행할 수 있습니다. 일부 예시로는 Amazon S3 버킷에 파일 업로드, Amazon DynamoDB 테이블의 데이터 변경, Amazon Kinesis 스트림에서 데이터 수신 등이 있습니다.
  2. API Gateway: AWS API Gateway와 통합하여 API 요청이 발생할 때 Lambda 함수를 실행할 수 있습니다. 이를 통해 RESTful API나 웹 애플리케이션의 백엔드로서 Lambda 함수를 사용할 수 있습니다.
  3. 스케줄된 이벤트: Lambda 함수를 주기적으로 실행하기 위해 AWS CloudWatch Events와 연결할 수 있습니다. 예를 들어, 매일 또는 매 시간 특정 작업을 실행하고자 할 때 사용할 수 있습니다.
  4. Amazon SNS: Amazon Simple Notification Service(SNS) 토픽에서 메시지를 수신할 때 Lambda 함수를 실행할 수 있습니다. 이를 통해 이벤트 기반 아키텍처를 구축하고 다른 서비스 간에 메시지를 전달할 수 있습니다.
  5. AWS Step Functions: AWS Step Functions에서 상태 머신을 정의하고 상태 전이가 발생할 때 Lambda 함수를 실행할 수 있습니다. 이를 통해 복잡한 워크플로우를 만들고 조정할 수 있습니다.

이 외에도 AWS IoT, Amazon SQS, Amazon Cognito 등 다른 AWS 서비스와의 통합을 통해 Lambda 함수를 트리거할 수 있습니다. 또한 사용자 정의 이벤트 소스를 통해 자체 애플리케이션 또는 외부 이벤트 소스에서 Lambda 함수를 트리거할 수도 있습니다.

 

2) lambda fuction

 

AWS Lambda는 서버리스 컴퓨팅 서비스로, 애플리케이션 코드를 실행하고 확장하기 위해 사용됩니다. 다음은 AWS Lambda의 동작 원리에 대한 간단한 설명입니다:

  1. 함수 실행 환경: Lambda 함수는 이벤트가 트리거되면 AWS에서 자동으로 관리되는 실행 환경에서 실행됩니다. 이 실행 환경은 인프라, 운영 체제, 보안 패치 등을 관리하며, 함수의 실행에 필요한 리소스를 할당합니다.
  2. 코드 실행: Lambda 함수는 설정된 이벤트에 대해 미리 정의된 코드를 실행합니다. 이 코드는 여러 프로그래밍 언어(예: Python, Node.js, Java)로 작성할 수 있습니다. Lambda 함수는 이벤트에 응답하기 위해 필요한 계산 작업을 수행하고, 추가적인 AWS 리소스에 액세스하여 필요한 작업을 수행할 수 있습니다.
  3. 확장성: Lambda 함수는 수행량에 따라 자동으로 확장됩니다. 즉, 함수가 동시에 여러 요청을 처리하거나 더 많은 리소스가 필요한 경우, AWS는 추가적인 실행 환경을 자동으로 프로비저닝하여 처리합니다. 이로써 애플리케이션이 높은 트래픽 부하에 대응할 수 있습니다.
  4. 지속 시간과 비용: Lambda 함수의 실행은 일정 시간 제한 내에서 수행됩니다. 일반적으로 함수가 짧은 시간 내에 실행되는 것이 권장됩니다. 실행 시간에 따라 비용이 책정되며, 실제로 코드가 실행되는 시간만큼만 비용이 청구됩니다.

이상이 AWS Lambda의 간단한 동작 원리에 대한 설명입니다. AWS Lambda는 서버 관리 없이 코드를 실행할 수 있으므로, 애플리케이션 개발자들에게 유연하고 확장 가능한 서버리스 아키텍처를 제공합니다.

 

3. lambda traget

 

  1. 리턴 값: Lambda 함수는 일반적으로 함수의 리턴 값으로 결과를 반환합니다. 이는 함수를 호출한 클라이언트나 다른 서비스에서 결과를 수신하는 데 사용됩니다. 예를 들어, Python에서는 return 문을 사용하여 값을 반환할 수 있습니다.
  2. 로그: Lambda 함수는 로그를 기록하여 실행 중에 발생하는 이벤트와 결과를 추적할 수 있습니다. 함수의 로그는 AWS CloudWatch Logs에 저장되며, AWS Management Console이나 AWS CLI 등을 통해 확인할 수 있습니다.
  3. 이벤트 소스로의 전달: Lambda 함수가 트리거된 이벤트를 수정하고 다른 서비스로 전달할 수도 있습니다. 예를 들어, Lambda 함수가 Amazon S3에 업로드된 파일을 처리하고 처리된 결과를 다시 다른 AWS 서비스로 전달할 수 있습니다.
  4. 외부 서비스 호출: Lambda 함수는 실행 중에 다른 AWS 서비스나 외부 API를 호출할 수 있습니다. 이를 통해 결과를 외부 서비스로 전송하거나 추가 작업을 수행할 수 있습니다.
  5. 메시징 시스템: Lambda 함수는 메시지 큐 시스템인 Amazon SQS나 이벤트 버스 시스템인 Amazon SNS를 통해 결과를 전송할 수도 있습니다. 다른 서비스나 애플리케이션에서 해당 메시징 시스템을 구독하고 결과를 수신할 수 있습니다.

4. 유의점

 

- 공통 라이브러리 : 매번 올리지 않고 Layer tab upload

- api gateway tragger 사용시 :  lambda (user Lambda proxy : Intergration check )

- user -> api 호출시 : 외부에서 특정 URL 접근하여 사용하는경우 보안적인 문제로 cors 기본적으로 막힘 있음 , 
  해결책) AWS Consloe > lambda > enable cors check > Deploy

- 성능개선 :  매번 fuction 호출시 초기화 작업이 이루어지는겨우 ->  handler 밖에 빼서 코팅

- DB connection full : lambda 에서는 X

- 실행 결과 값은 보기 위해선 lambda 모니터링 페이지 혹은 cloudwatch > loggroup 으로 이동해서 details 볼수 있다