Go로 Lambda 함수 빌드하기
Go로 Lambda 함수 빌드하기
Go는 다른 관리형 런타임과는 구현 방식이 달라요. Go는 네이티브로 실행 가능한 바이너리로 컴파일되기 때문에 별도의 언어 런타임이 필요하지 않습니다. Go 함수를 Lambda에 배포할 때는 OS-only 런타임(provided 런타임 계열)을 사용하세요.
본문
Go에서 레이어를 사용하는 방법은 Go Lambda 함수의 레이어 다루기를 참고하세요.
Topics
- Go 런타임 지원
- 도구와 라이브러리
- Go에서 Lambda 함수 핸들러 정의하기
- Lambda 컨텍스트 객체로 Go 함수 정보 가져오기
- .zip 파일 아카이브로 Go Lambda 함수 배포하기
- 컨테이너 이미지로 Go Lambda 함수 배포하기
- Go Lambda 함수의 레이어 다루기
- Go Lambda 함수 로깅 및 모니터링
- AWS Lambda에서 Go 코드 계측하기
Go 런타임 지원
Lambda용 Go 1.x 관리형 런타임은 더 이상 사용되지 않아요(deprecated). Go 1.x 런타임을 사용하는 함수가 있다면 provided.al2023 또는 provided.al2로 함수를 마이그레이션해야 합니다. provided.al2023과 provided.al2 런타임은 go1.x보다 여러 가지 장점이 있어요. arm64 아키텍처(AWS Graviton2 프로세서) 지원, 더 작은 바이너리, 그리고 약간 더 빠른 호출 속도 등이 그 예시입니다.
이 마이그레이션에는 코드 변경이 필요 없어요. 필요한 변경은 배포 패키지를 빌드하는 방법과 함수를 만들 때 사용하는 런타임뿐입니다. 자세한 내용은 AWS Compute Blog의 Amazon Linux 2의 커스텀 런타임으로 Go1.x 런타임의 AWS Lambda 함수 마이그레이션하기를 참고하세요.
| 이름 | 식별자 | 운영 체제 | 사용 중단 날짜 | 함수 생성 차단 | 함수 업데이트 차단 |
|---|---|---|---|---|---|
| OS-only 런타임 | provided.al2023 |
Amazon Linux 2023 | 2029년 6월 30일 | 2029년 7월 31일 | 2029년 8월 31일 |
도구와 라이브러리
Lambda는 Go 런타임용으로 다음과 같은 도구와 라이브러리를 제공합니다:
- AWS SDK for Go v2: Go 프로그래밍 언어용 공식 AWS SDK입니다.
- github.com/aws/aws-lambda-go/lambda: Go용 Lambda 프로그래밍 모델 구현입니다. AWS Lambda가 핸들러를 호출할 때 사용하는 패키지예요.
- github.com/aws/aws-lambda-go/lambdacontext: 컨텍스트 객체에서 컨텍스트 정보에 접근하는 도우미입니다.
- github.com/aws/aws-lambda-go/events: 일반적인 이벤트 소스 통합을 위한 타입 정의를 제공하는 라이브러리입니다.
- github.com/aws/aws-lambda-go/cmd/build-lambda-zip: Windows에서 .zip 파일 아카이브를 만드는 데 사용할 수 있는 도구입니다.
자세한 내용은 GitHub의 aws-lambda-go를 참고하세요.
Lambda는 Go 런타임용으로 다음과 같은 샘플 애플리케이션을 제공합니다:
Go 샘플 Lambda 애플리케이션
- go-al2 – 공용 IP 주소를 반환하는 Hello world 함수입니다. 이 앱은
provided.al2커스텀 런타임을 사용합니다. - blank-go – Lambda의 Go 라이브러리, 로깅, 환경 변수, AWS SDK 사용을 보여주는 Go 함수입니다. 이 앱은
go1.x런타임을 사용합니다.