AWS Lambda – 개요
AWS Lambda서버없이 컴퓨팅을 수행하는 서버리스 컴퓨팅을 수행하는 서비스입니다. 코드는 S3 버킷에서 파일 추가 / 제거, Amazon dynamo dB 테이블 업데이트, Amazon API 게이트웨이의 HTTP 요청 등과 같은 AWS 서비스의 이벤트 응답을 기반으로 실행됩니다.
작업하려면 AWS Lambda, AWS Lambda 서비스에서 코드를 푸시하기 만하면됩니다. 인프라, 운영 체제, 서버 유지 관리, 코드 모니터링, 로그 및 보안과 같은 기타 모든 작업 및 리소스는 AWS에서 처리합니다.
AWS LambdaJava, NodeJS, Python, C # 및 Go와 같은 언어를 지원합니다. AWS Lambda는 AWS 서비스에서만 작동합니다.
AWS Lambda 란 무엇입니까?
공식 문서에서 제공하는 AWS Lambda의 정의는 다음과 같습니다.
AWS Lambda는 서버를 프로비저닝하거나 관리하지 않고도 코드를 실행할 수있는 컴퓨팅 서비스입니다. AWS Lambda는 필요할 때만 코드를 실행하고 하루에 몇 번의 요청에서 초당 수천으로 자동 확장됩니다. 사용한 컴퓨팅 시간에 대해서만 비용을 지불합니다. 코드가 실행되고 있지 않을 때는 요금이 부과되지 않습니다.
AWS Lambda는 어떻게 작동합니까?
간단한 5 단계로 AWS Lambda의 작동을 설명하는 블록 다이어그램은 다음과 같습니다.
Step 1 − AWS Lambda가 지원하는 모든 언어 (예 : NodeJS, Java, Python, C # 및 Go)로 AWS Lambda 코드를 업로드합니다.
Step 2 − AWS lambda가 트리거 될 수있는 몇 가지 AWS 서비스입니다.
Step 3 −트리거가 발생한 업로드 코드 및 이벤트 세부 정보가있는 AWS Lambda. 예를 들어 Amazon S3, Amazon API Gateway, Dynamo dB, Amazon SNS, Amazon Kinesis, CloudFront, Amazon SES, CloudTrail, 모바일 앱 등의 이벤트입니다.
Step 4 − 다음과 같은 시나리오에서 AWS 서비스에 의해 트리거 될 때만 AWS Lambda 코드를 실행합니다.
- 사용자가 S3 버킷에 파일 업로드
- http get / post 엔드 포인트 URL이 적중되었습니다.
- 데이터가 dynamo dB 테이블에서 추가 / 업데이트 / 삭제됩니다.
- 푸시 알림
- 데이터 스트림 수집
- 웹 사이트 호스팅
- 이메일 보내기
- 모바일 앱 등
Step 5 − AWS는 AWS 람다 코드가 실행될 때만 요금이 부과되며 그렇지 않은 경우에는 요금이 부과되지 않습니다.
AWS Lambda 사용의 이점
AWS Lambda는 작업 할 때 여러 가지 이점을 제공합니다. 이 섹션에서는 이에 대해 자세히 설명합니다.
코드 작업의 용이성
AWS Lambda는 코드를 업로드 할 수있는 인프라를 제공합니다. 코드를 유지 관리하고 필요한 이벤트가 발생할 때마다 코드를 트리거합니다. 코드에 필요한 메모리와 타임 아웃을 선택할 수 있습니다.
AWS Lambda는 이벤트 트리거에 따라 병렬 요청을 실행할 수도 있습니다.
로그 제공
AWS Lambda는 코드 실행 횟수, 실행에 소요 된 시간, 사용 된 메모리 등에 대한 세부 정보를 제공합니다. AWS CloudWatch는 모든 로그를 수집하므로 실행 흐름을 이해하고 코드를 디버깅하는 데 도움이됩니다.
사용량에 따른 청구
AWS Lambda 청구는 메모리 사용량, 요청 및 실행에 대해 이루어지며 최소 100ms 단위로 청구됩니다. 따라서 500ms 실행의 경우 100ms마다 청구됩니다. AWS 람다 코드를 500ms 내에 실행하도록 지정하고 실행하는 데 걸리는 시간이 200ms에 불과하면 AWS는 500ms가 아닌 200ms의 실행 시간에 대해서만 비용을 청구합니다. AWS는 항상 사용한 실행 시간에 대해 요금을 부과합니다. 함수가 실행되지 않으면 지불 할 필요가 없습니다.
다국어 지원
AWS Lambda는 Node.js와 같이 널리 사용되는 언어를 지원합니다. Node.js, Python, Java, C # 및 Go. 이들은 널리 사용되는 언어이며 모든 개발자는 AWS Lambda 용 코드를 쉽게 작성할 수 있습니다.
손쉬운 코드 작성 및 배포
코드 작성 및 배포를 위해 Lambda에서 사용할 수있는 많은 옵션이 있습니다. 코드 작성을 위해 AWS 온라인 편집기, Visual Studio IDE 또는 Eclipse IDE를 사용할 수 있습니다. 또한 AWS Lambda 코드를 쉽게 작성하고 배포 할 수있는 서버리스 프레임 워크를 지원합니다. AWS 콘솔 외에도 코드를 생성하고 배포 할 수있는 AWS-cli가 있습니다.
다른 기능들
AWS 프리 티어에 로그인하여 AWS Lambda를 무료로 사용할 수 있습니다. 1 년 동안 무료로 서비스를 제공합니다. AWS 프리 티어에서 제공하는 무료 서비스를 살펴보십시오.
AWS Lambda 사용의 단점
많은 장점에도 불구하고 AWS Lambda에는 다음과 같은 단점이 있습니다.
소규모 프로젝트에는 적합하지 않습니다.
코드를주의 깊게 분석하고 메모리와 시간 제한을 결정해야합니다. 함수에 할당 된 시간보다 더 많은 시간이 필요한 경우 지정된 시간 제한에 따라 종료되고 코드가 완전히 실행되지 않습니다.
AWS Lambda는 인프라를 AWS에 전적으로 의존하므로 코드에서 요구하는 경우 추가 소프트웨어를 설치할 수 없습니다.
AWS Lambda를 트리거하는 이벤트
AWS Lambda를 트리거 할 수있는 이벤트는 다음과 같습니다.
- S3 객체에 진입
- Dynamo DB 테이블에 데이터 삽입, 업데이트 및 삭제
- SNS에서 푸시 알림
- API Gateway에 대한 GET / POST 호출
- 뷰어 또는 CloudFront의 오리진 요청 / 응답에서 헤더 수정
- AWS Kinesis 데이터 스트림의 로그 항목
- CloudTrail의 로그 기록
AWS Lambda의 사용 사례
AWS Lambda는 주로 백그라운드 프로세스를 실행하는 데 사용되는 컴퓨팅 서비스입니다. 다른 AWS 서비스와 함께 사용할 때 트리거 될 수 있습니다. AWS Lambda를 사용할 수있는 AWS 서비스 목록은 다음과 같습니다.
S3 객체 및 AWS Lambda
Amazon S3는 S3에 파일 업로드가있을 때 이벤트 세부 정보를 AWS Lambda에 전달합니다. 파일 업로드, 파일 삭제 또는 파일 이동에 대한 세부 정보가 AWS Lambda에 전달됩니다. AWS Lambda의 코드는 이벤트 세부 정보를 수신 할 때 필요한 단계를 수행 할 수 있습니다. 예를 들어 S3에 삽입 된 이미지의 썸네일을 생성합니다.
DynamoDB 및 AWS Lambda
DynamoDB는 테이블에 추가, 업데이트 및 삭제 된 데이터가있을 때 AWS Lambda를 트리거 할 수 있습니다. AWS Lambda 이벤트에는 삽입 / 업데이트 또는 삭제에 대한 AWS DynamoDB 테이블의 모든 세부 정보가 있습니다.
API Gateway 및 AWS Lambda
API Gateway는 GET / POST 메서드에서 AWS Lambda를 트리거 할 수 있습니다. 양식을 생성하고 API Gateway 엔드 포인트와 세부 정보를 공유하고 추가 처리 (예 : DynamoDB 테이블에 데이터 입력)를 위해 AWS Lambda와 함께 사용할 수 있습니다.
SNS 및 AWS Lambda
SNS는 푸시 알림, SMS 전송 등에 사용됩니다. SNS에서 푸시 알림이 발생하면 AWS Lambda를 트리거 할 수 있습니다. 트리거를 수신하면 AWS Lambda에서 전화 번호로 SMS를 보낼 수도 있습니다.
예약 된 이벤트 및 AWS Lambda
cron 작업에 예약 된 이벤트를 사용할 수 있습니다. AWS Lambda를 트리거하여 정규 시간 패턴으로 작업을 수행 할 수 있습니다.
CloudTrail 및 AWS Lambda
CloudTrail은 계정의 로그를 모니터링하는 데 유용 할 수 있습니다. AWS Lambda를 사용하여 CloudTrail 로그를 추가로 처리 할 수 있습니다.
Kinesis 및 AWS Lambda
Kinesis는 웹 사이트 클릭, 로그, 소셜 미디어 피드에서 발생하는 실시간 추적 데이터를 캡처 / 저장하는 데 사용되며 AWS Lambda에 대한 트리거는이 로그에서 추가 처리를 수행 할 수 있습니다.
CloudFront 및 Lambda @ Edge
CloudFront는 웹 사이트를 호스팅 할 수있는 콘텐츠 전송 네트워크이며 Lambda @ Edge를 사용하여 뷰어 요청, 오리진 요청, 오리진 응답 및 뷰어 응답에서 오는 헤더를 처리 할 수 있습니다. 헤더 수정에는 쿠키 데이터 수정, URL 재 작성, 사용자에게 다시 보내는 응답을 변경하기 위해 AB 테스트에 사용, 보안 목적으로 추가 헤더 정보 추가 등과 같은 작업이 포함됩니다.