Lambda는 서버를 프로비저닝하거나 관리하지 않고도 코드를 실행할 수 있게 해주는 컴퓨팅 서비스입니다. Lambda는 고가용성 컴퓨팅 인프라에서 코드를 실행하고 서버와 운영 체제 유지 관리, 용량 프로비저닝 및 자동 조정, 코드 및 보안 패치 배포, 로깅 등 모든 컴퓨팅 리소스 관리를 수행합니다. Lambda를 사용하면 거의 모든 유형의 애플리케이션 또는 백엔드 서비스에 대한 코드를 실행할 수 있습니다. Lambda가 지원하는 언어 중 하나로 코드를 공급하기만 하면 됩니다.
Lambda 함수에 코드를 구성합니다. Lambda는 필요 시에만 함수를 실행하며, 일일 몇 개의 요청에서 초당 수천 개의 요청까지 자동으로 확장이 가능합니다. 사용한 컴퓨팅 시간만큼만 비용을 지불하고, 코드가 실행되지 않을 때는 요금이 부과되지 않습니다.
Lambda API를 사용하여 Lambda 함수를 호출하거나, Lambda가 다른 AWS 서비스의 이벤트에 응답하여 함수를 실행할 수 있습니다. 예를 들어, Lambda를 사용하여 다음을 수행할 수 있습니다.
Amazon Simple Storage Service(Amazon S3) 및 Amazon DynamoDB와 같은 AWS 서비스를 위한 데이터 처리 트리거를 빌드할 수 있습니다.
Amazon Kinesis에 저장된 스트리밍 데이터를 처리할 수 있습니다.
AWS 규모, 성능 및 보안으로 작동하는 고유한 백엔드를 만듭니다.
Lambda는 Lambda 표준 런타임 환경을 사용하고 Lambda에서 제공한 리소스 내에서 애플리케이션 코드를 실행할 수 있는 경우에 많은 애플리케이션 시나리오를 위한 이상적인 컴퓨팅 서비스입니다.
Lambda를 사용하면 사용자는 자신의 코드에 대해서만 책임을 갖습니다. Lambda는 메모리, CPU, 네트워크 및 기타 리소스의 균형을 제공하는 컴퓨팅 플릿을 관리하여 코드를 실행합니다. Lambda가 이러한 리소스를 관리하므로 컴퓨팅 인스턴스에 로그인하거나 제공된 런타임에 운영 체제를 사용자 지정할 수 없습니다. Lambda는 사용자를 대신하여 용량 관리, 모니터링 및 Lambda 함수 로깅을 비롯한 운영 및 관리 활동을 수행합니다.
자체 컴퓨팅 리소스를 관리해야 하는 경우 AWS는 사용자의 요구를 충족하는 다른 컴퓨팅 서비스도 제공합니다. 예:
Amazon Elastic Compute Cloud(Amazon EC2)는 선택할 수 있는 다양한 EC2 인스턴스 유형을 제공합니다. 운영 체제, 네트워크 및 보안 설정, 전체 소프트웨어 스택을 사용자 지정할 수 있습니다. 용량을 프로비저닝하고, 플릿 상태 및 성능을 모니터링하고, 내결함성을 위해 가용 영역을 사용할 책임은 사용자에게 있습니다.
AWS Elastic Beanstalk를 사용하면 Amazon EC2에 애플리케이션을 배포하고 확장할 수 있습니다. 사용자는 기반 EC2 인스턴스에 대한 소유권과 완전한 제어 권한을 보유합니다.
다음 주요 기능은 확장 가능하고 안전하며 쉽게 확장할 수 있는 Lambda 애플리케이션 프로그램을 개발하는 데 도움이 됩니다.
동시성 및 크기 조정 컨트롤
동시성 제한 및 프로비저닝된 동시성과 같은 동시성 및 크기 조정 제어를 사용하면 프로덕션 애플리케이션의 크기 조정 및 응답성을 세밀하게 제어할 수 있습니다.
컨테이너 이미지로 정의된 함수
선호하는 컨테이너 이미지 도구, 워크플로 및 종속성을 사용하여 Lambda 함수를 빌드, 테스트 및 배포할 수 있습니다.
코드 서명
Lambda에 대한 코드 서명은 승인된 개발자가 게시한 변경되지 않은 코드만 Lambda 함수에 배포되었는지 확인할 수 있는 신뢰 및 무결성 제어 기능을 제공합니다.
Lambda 익스텐션
Lambda 익스텐션을 사용하여 Lambda 함수를 보강할 수 있습니다. 예를 들어 익스텐션 기능을 사용하면 Lambda를 모니터링, 가관측성, 보안 및 거버넌스를 위해 자주 사용하는 도구에 보다 쉽게 통합할 수 있습니다.
함수 블루프린트
함수 블루프린트는 다른 AWS 서비스 또는 서드 파티 애플리케이션을 Lambda와 함께 사용하는 방법을 보여주는 샘플 코드를 제공합니다. 블루프린트에는 Node.js 및 Python 런타임에 대한 샘플 코드 및 함수 구성 사전 설정이 포함되어 있습니다.
데이터베이스 액세스
데이터베이스 프록시는 데이터베이스 연결 풀을 관리하고 함수에서 쿼리를 릴레이합니다. 이렇게 하면 데이터베이스 연결을 소모하지 않고 높은 동시성 레벨에 도달할 수 있습니다.
파일 시스템 액세스
Amazon Elastic File System(Amazon EFS) 파일 시스템을 로컬 디렉터리에 마운트하도록 함수를 구성할 수 있습니다. Amazon EFS를 사용하면 함수 코드가 안전하고 높은 동시성으로 공유 리소스에 액세스하여 수정할 수 있습니다.
/AWS/Lambda/함수/함수생성에서 새로작성 선택
| 함수 생성 | 새로 생성 |
|---|---|
| 함수 이름 | lambda-api-get |
| 런타임 | Python 3.8 |
| 아키텍처 | x86_64 |
함수 생성 클릭
아래 내용처럼 편집하고 Ctrl+s로 저장
Deploy 클릭
import json
def lambda_handler(event, context):
# TODO implement
return {
'statusCode': 200,
'body': json.dumps("MZC API from Lambda!??")
}
나와서..
/AWS/Lambda/함수/함수생성 클릭
| 함수 생성 | 새로 생성 |
|---|---|
| 함수 이름 | lambda-api-post |
| 런타임 | Python 3.8 |
| 아키텍처 | x86_64 |
함수 생성 클릭
아래 내용처럼 편집하고 Ctrl+s로 저장
Deploy 클릭
import json
def lambda_handler(event, context):
# TODO implement
return_data = event['key']
return {
'statusCode': 200,
'body': json.dumps(return_data + " Wow~~~ ")
}
서비스/API Gateway/API/API 유형 선택/REST API/구축 선택
| 프로토콜 선택 | REST |
|---|---|
| 새 API 생성 | 새 API |
| API 이름 | APIGateway-LambdaAPI |
API 생성 클릭
API/API:APIGateway-LambdaAPI/리소스/작업 클릭 후 리소스 생성 클릭
| 리소스 이름 | mzc |
|---|
리소스 생성 클릭
API/API:APIGateway-LambdaAPI/리소스/작업 클릭 후 메서드 생성 클릭
/mzc밑에 박스 활성화 시키고 GET 클릭 V 클릭
통합 유형|Lambda 함수
Lambda 리전|ap-northeast-2
Lambda 함수|lambda-api-get
저장 클릭
확인 클릭
API/API:APIGateway-LambdaAPI/리소스/작업 클릭 후 메서드 생성 클릭
/mzc밑에 박스 활성화 시키고 POST 클릭 V 클릭
| 통합 유형 | Lambda 함수 |
|---|---|
| Lambda 리전 | ap-northeast-2 |
| Lambda 함수 | lambda-api-post |
서비스/AWS Lambda/함수/lambda-api-get 클릭

API Gateway가 자동으로 등록된 것을 확인할 수 있다.
서비스/API/API:APIGateway-LambdaAPI/리소스/GET/테스트 클릭
테스트 클릭

서비스/API/API:APIGateway-LambdaAPI/리소스/POST/테스트 클릭
요청 본문에
{
"key" : "MegazoneCloud"
}
테스트 클릭

/AWS/Lambda/함수/함수생성에서 새로작성 선택
| 함수 생성 | 새로 생성 |
|---|---|
| 함수 이름 | lambda-hello |
| 런타임 | Python 3.8 |
| 아키텍처 | x86_64 |
함수 생성 클릭
아래 내용처럼 편집하고 Ctrl+s로 저장
Deploy 클릭
import json
def lambda_handler(event, context):
# TODO implement
try:
if event['method'] == "POST" :
return {
'statusCode' : 200,
'body' : json.dumps('Post Method ?!')
}
except :
return {
'statusCode': 200,
'body': json.dumps('Get Method')
}
API/API:APIGateway-LambdaAPI/리소스/작업 클릭 후 메서드 생성 클릭
/mzc밑에 박스 활성화 시키고 GET 클릭 V 클릭
| 통합 유형 | Lambda 함수 |
|---|---|
| Lambda 리전 | ap-northeast-2 |
| Lambda 함수 | lambda-hello |
저장 클릭
확인 클릭
API/API:APIGateway-LambdaAPI/리소스/작업 클릭 후 메서드 생성 클릭
/mzc밑에 박스 활성화 시키고 POST 클릭 V 클릭
| 통합 유형 | Lambda 함수 |
|---|---|
| Lambda 리전 | ap-northeast-2 |
| Lambda 함수 | lambda-hello |
서비스/AWS Lambda/함수/lambda-api-get 클릭
서비스/API/API:APIGateway-LambdaAPI/리소스/GET/테스트 클릭
테스트 클릭

서비스/API/API:APIGateway-LambdaAPI/리소스/POST/테스트 클릭
요청 본문에
{
"method" : "POST"
}
테스트 클릭

서비스/API/API:APIGateway-LambdaAPI/리소스//Actions/API작업/API배포 클릭
| 배포 스테이지 | [새 스테이지] |
|---|---|
| 스테이지 이름 | mzcapi |
| 스테이지 설명 | api |
| 배포 설명 | api |
배포 클릭
서비스/API/API:APIGateway-LambdaAPI/스테이지/스테이지/mzcapi/mzcapi 스테이지 편집기/URL 호출 링크 클릭

결과 메시지 확인
Stage 에 표시된 Invoke URL 에 적혀있는 URL 은 “/” 즉 루트 Resource를 가리키며, “/” 에 대한 메소드 정의가 되어 있지 않으면 나타나는 오류이다.
→ Method 를 정의한 하위 URL 을 추가로 작성 후, 접근 시 에러가 나타나지 않는다.

아래 링크로 확장 가능
https://winterandsnow.tistory.com/15
크롬 브라우저에 플러그인 설치 후 실행 화면

