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
크롬 브라우저에 플러그인 설치 후 실행 화면