첫 번째 Lambda 함수 만들기
첫 번째 Lambda 함수 만들기
Lambda를 처음 시작한다면, Lambda 콘솔을 이용해 함수를 만들어 보는 것이 가장 빠른 길이에요. 몇 분 안에 함수를 만들고 배포한 뒤 콘솔에서 바로 테스트할 수 있습니다.
본문
이 튜토리얼을 진행하면서 Lambda의 기본 개념들을 자연스럽게 익히게 돼요. 예를 들어 Lambda 이벤트 객체를 이용해 함수에 인자를 전달하는 방법, 함수에서 로그 출력을 반환하는 방법, 그리고 Amazon CloudWatch Logs에서 함수의 호출(invocation) 로그를 확인하는 방법을 배울 수 있답니다.
쉽게 시작할 수 있도록, 여기서는 Python 또는 Node.js 런타임으로 함수를 만들어요. 이 두 인터프리터 언어는 콘솔에 내장된 코드 편집기에서 함수 코드를 바로 수정할 수 있어요. 반면 Java나 C# 같은 컴파일 언어는 로컬 빌드 머신에서 배포 패키지를 만든 뒤 Lambda에 업로드해야 합니다. 다른 런타임을 이용해 Lambda에 함수를 배포하는 방법은 추가 자료와 다음 단계 섹션의 링크에서 확인할 수 있어요.
팁
서버리스 솔루션을 만드는 방법을 더 배우고 싶다면 Serverless 개발자 안내서를 확인해 보세요.
AWS 계정 등록하기
AWS를 시작하려면 AWS 계정이 필요해요. AWS 계정 생성에 대한 자세한 내용은 AWS 계정 관리 참조 안내서의 AWS 계정 시작하기 문서를 참고하세요.
콘솔로 Lambda 함수 만들기
이 예시에서 함수는 "length"와 "width"라는 두 정수 값을 담은 JSON 객체를 입력으로 받아요. 함수는 이 두 값을 곱해 면적(area)을 계산하고, 그 결과를 JSON 문자열로 반환합니다.
또한 함수는 계산된 면적과 CloudWatch 로그 그룹의 이름을 함께 출력해요. 튜토리얼 뒷부분에서는 CloudWatch Logs를 사용해 함수 호출 기록을 보는 법을 배우게 됩니다.
콘솔로 Hello world Lambda 함수 만들기
- Lambda 콘솔의 Functions 페이지를 엽니다.
- Create function(함수 만들기)을 선택합니다.
- Author from scratch(처음부터 작성)을 선택합니다.
- Basic information(기본 정보) 창에서 Function name(함수 이름)에
myLambdaFunction을 입력합니다. - Runtime(런타임)에서 Node.js 24 또는 Python 3.14를 선택합니다.
- 아키텍처는 x86_64로 두고, Create function(함수 만들기)을 선택합니다.
Hello from Lambda! 메시지를 반환하는 간단한 함수와 함께, Lambda는 함수를 위한 실행 역할(execution role)도 함께 만들어요. 실행 역할은 Lambda 함수가 AWS 서비스와 리소스에 접근할 권한을 부여하는 AWS Identity and Access Management(IAM) 역할이에요. 이 함수의 경우 Lambda가 만든 역할은 CloudWatch Logs에 로그를 쓸 수 있는 기본 권한을 부여합니다.
콘솔에 내장된 코드 편집기를 사용해 Lambda가 만들어준 Hello world 코드를 여러분의 함수 코드로 바꿔 보세요.
콘솔 코드 편집기로 Lambda 함수 호출하기
Lambda 콘솔 코드 편집기로 함수를 호출하려면, 함수에 보낼 테스트 이벤트를 만들어야 해요. 이벤트는 "length"와 "width"라는 두 키-값 쌍을 담은 JSON 형식 문서입니다.
테스트 이벤트 만들기
- 콘솔 코드 편집기의 TEST EVENTS(테스트 이벤트) 섹션에서 Create test event(테스트 이벤트 만들기)를 선택합니다.
- Event Name(이벤트 이름)에
myTestEvent를 입력합니다. - Event JSON 섹션에서 기본 JSON을 아래 값으로 교체합니다.
- Save(저장)을 선택합니다.
함수를 테스트하고 호출 기록 보기
콘솔 코드 편집기의 TEST EVENTS 섹션에서 테스트 이벤트 옆의 실행 아이콘을 선택하세요.
함수가 실행을 마치면 응답과 함수 로그가 OUTPUT(출력) 탭에 표시됩니다. 아래와 비슷한 결과가 보였을 거예요.
Lambda 콘솔 밖에서 함수를 호출할 때는 CloudWatch Logs를 사용해 함수의 실행 결과를 확인해야 합니다.
CloudWatch Logs에서 함수 호출 기록 보기
- CloudWatch 콘솔의 Log groups 페이지를 엽니다.
- 함수의 로그 그룹(
/aws/lambda/myLambdaFunction)을 선택합니다. 이게 함수가 콘솔에 출력한 로그 그룹 이름이에요. - 아래로 스크롤해 확인하고 싶은 호출에 해당하는 Log stream(로그 스트림)을 선택합니다. 아래와 비슷한 출력이 보일 거예요.
Node.js
DEBUG: cli (none)`INIT_START Runtime Version: nodejs:22.v13 Runtime Version ARN: arn:aws:lambda:us-west-2::runtime:e3aaabf6b92ef8755eaae2f4bfdcb7eb8c4536a5e044900570a42bdba7b869d9
START RequestId: aba6c0fc-cf99-49d7-a77d-26d805dacd20 Version: $LATEST
2024-08-23T22:04:15.809Z 5c012b0a-18f7-4805-b2f6-40912935034a INFO The area is 42
2024-08-23T22:04:15.810Z aba6c0fc-cf99-49d7-a77d-26d805dacd20 INFO CloudWatch log group: /aws/lambda/myLambdaFunction
END RequestId: aba6c0fc-cf99-49d7-a77d-26d805dacd20
REPORT RequestId: aba6c0fc-cf99-49d7-a77d-26d805dacd20 Duration: 17.77 ms Billed Duration: 18 ms Memory Size: 128 MB Max Memory Used: 67 MB Init Duration: 178.85 ms`
Python
DEBUG: cli (none)`INIT_START Runtime Version: python:3.13.v16 Runtime Version ARN: arn:aws:lambda:us-west-2::runtime:ca202755c87b9ec2b58856efb7374b4f7b655a0ea3deb1d5acc9aee9e297b072
START RequestId: 9d4096ee-acb3-4c25-be10-8a210f0a9d8e Version: $LATEST
The area is 42
[INFO] 2024-09-01T00:05:22.464Z 9315ab6b-354a-486e-884a-2fb2972b7d84 CloudWatch logs group: /aws/lambda/myLambdaFunction
END RequestId: 9d4096ee-acb3-4c25-be10-8a210f0a9d8e
REPORT RequestId: 9d4096ee-acb3-4c25-be10-8a210f0a9d8e Duration: 1.15 ms Billed Duration: 2 ms Memory Size: 128 MB Max Memory Used: 40 MB`
정리하기
예시 함수 사용이 끝났다면 삭제하세요. 함수 로그를 저장하는 로그 그룹과 콘솔이 만들어준 실행 역할도 함께 삭제할 수 있어요.
Lambda 함수 삭제하기
- Lambda 콘솔의 Functions 페이지를 엽니다.
- 만든 함수를 선택합니다.
- Actions(작업) > Delete(삭제)를 선택합니다.
- 텍스트 입력 필드에
confirm을 입력하고 Delete(삭제)를 선택합니다.
로그 그룹 삭제하기
- CloudWatch 콘솔의 Log groups 페이지를 엽니다.
- 함수의 로그 그룹(
/aws/lambda/myLambdaFunction)을 선택합니다. - Actions(작업) > Delete log group(s)(로그 그룹 삭제)을 선택합니다.
- Delete log group(s) 대화 상자에서 Delete(삭제)를 선택합니다.
실행 역할 삭제하기
- AWS Identity and Access Management(IAM) 콘솔의 Roles 페이지를 엽니다.
- 함수의 실행 역할(예:
myLambdaFunction-role-31exxmpl)을 선택합니다. - Delete(삭제)를 선택합니다.
- Delete role 대화 상자에서 역할 이름을 입력한 뒤 Delete(삭제)를 선택합니다.
추가 자료와 다음 단계
이제 콘솔에서 간단한 Lambda 함수를 만들고 테스트했으니, 다음 단계로 넘어가 보세요:
- 함수에 의존성을 추가하고 .zip 배포 패키지로 배포하는 방법을 배워 보세요. 선호하는 언어를 아래 링크에서 선택하면 됩니다.
- Node.js: .zip 파일 아카이브로 Node.js Lambda 함수 배포하기
- TypeScript: .zip 파일 아카이브로 Lambda에 트랜스파일된 TypeScript 코드 배포하기
- Python: Python Lambda 함수의 .zip 파일 아카이브 다루기
- Ruby: .zip 파일 아카이브로 Ruby Lambda 함수 배포하기
- Java: .zip 또는 JAR 파일 아카이브로 Java Lambda 함수 배포하기
- Go: .zip 파일 아카이브로 Go Lambda 함수 배포하기
- C#: .zip 파일 아카이브로 C# Lambda 함수 빌드 및 배포하기
- 다른 AWS 서비스를 사용해 Lambda 함수를 호출하는 방법을 배우려면 튜토리얼: Amazon S3 트리거로 Lambda 함수 호출하기를 참고하세요.
- Lambda를 다른 AWS 서비스와 함께 사용하는 더 복잡한 예시를 보려면 다음 튜토리얼 중 하나를 선택하세요.
- 튜토리얼: Lambda와 API Gateway 사용하기: Lambda 함수를 호출하는 Amazon API Gateway REST API 만들기
- Lambda 함수로 Amazon RDS 데이터베이스에 접근하기: RDS Proxy를 통해 Amazon Relational Database Service(Amazon RDS) 데이터베이스에 데이터를 쓰는 Lambda 함수 사용하기
- Amazon S3 트리거로 썸네일 이미지 만들기: 이미지 파일이 Amazon S3 버킷에 업로드될 때마다 썸네일을 만드는 Lambda 함수 사용하기