Go 개발자가 AWS Lambda 기능을 개발하는 데 도움이 되는 라이브러리, 샘플 및 도구입니다.
Go에서 AWS Lambda 함수를 작성하는 방법에 대해 자세히 알아보려면 공식 설명서로 이동하세요.
// main.gopackage mainimport ( "github.com/aws/aws-lambda-go/lambda")func hello() (string, error) { return "Hello λ!", nil}func main() { // 확인 AWS Lambdalambda.Start(hello)의 원격 프로시저 호출에 사용할 수 있는 핸들러 }
AWS Lambda에 배포할 바이너리를 준비하려면 Linux용으로 컴파일하여 .zip 파일에 배치해야 합니다. provided
, provided.al2
또는 provided.al2023
런타임을 사용하는 경우 .zip 파일 내의 실행 파일 이름은 bootstrap
으로 지정되어야 합니다. Lambda의 기본 아키텍처는 x86_64
이므로 x86이 아닌 환경에서 크로스 컴파일하는 경우 실행 파일은 GOARCH=amd64
로 빌드되어야 합니다. 마찬가지로, Lambda 함수가 ARM을 사용하도록 구성되는 경우 실행 파일은 GOARCH=arm64
로 빌드되어야 합니다.
GOOS=linux GOARCH=amd64 go build -o bootstrap main.go zip 람다-handler.zip 부트스트랩
Linux에서 Go 컴파일러의 기본 동작은 일부 표준 라이브러리 기능(예: DNS 조회)을 위해 출력 실행 파일을 시스템 libc에 연결하는 것입니다. 빌드 환경이 배포 환경보다 최신 GNU libc 버전이 포함된 Linux 배포판을 사용하는 경우 Lambda에 배포할 때 애플리케이션이 /lib64/libc.so.6: version `GLIBC_X.YZ' not found
와 같은 오류와 함께 실패할 수 있습니다.
대부분의 Go 애플리케이션은 시스템 libc에 연결할 필요가 없습니다. 이 동작은 CGO_ENABLED
환경 변수를 사용하여 비활성화할 수 있습니다.
CGO_ENABLED=0 go build -o bootstrap main.go zip lambda-handler.zip bootstrap
CGO 사용을 참조하세요.
Windows 개발자는 바이너리를 Linux에서 실행 가능한 것으로 표시하는 zip 파일을 생성하는 데 어려움을 겪을 수 있습니다. AWS Lambda에서 작동하는 .zip을 생성하려면 build-lambda-zip
도구가 도움이 될 수 있습니다.
도구 받기
go.exe 설치 github.com/aws/aws-lambda-go/cmd/build-lambda-zip@latest
GOPATH
의 도구를 사용하세요. Go가 기본 설치되어 있는 경우 도구는 %USERPROFILE%Gobin
에 있습니다.
cmd.exe에서:
set GOOS=linuxset GOARCH=amd64set CGO_ENABLED=0go build -o bootstrap main.go%USERPROFILE%Gobinbuild-lambda-zip.exe -olambda-handler.zip bootstrap
파워셸에서:
$env:GOOS = "리눅스"$env:GOARCH = "amd64"$env:CGO_ENABLED = "0"go build -o bootstrap main.go ~GoBinbuild-lambda-zip.exe -o Lambda-handler.zip 부트스트랩
CGO가 필요한 애플리케이션의 경우 빌드 환경은 대상 Lambda 런타임과 호환되는 설치된 GNU libc 버전을 사용해야 합니다. 그렇지 않으면 /lib64/libc.so.6: version `GLIBC_X.YZ' not found
와 같은 오류로 인해 실행이 실패할 수 있습니다.
람다 런타임 | GLIBC 버전 |
---|---|
provided.al2023 | 2.34 |
provided.al2 | 2.26 |
provided 및 go1.x | 2.17 |
또는 Lambda는 .zip 파일 대신 배포 패키지로 컨테이너 이미지를 지원합니다. 자세한 내용은 컨테이너 이미지 작업에 대한 공식 문서를 참조하세요.
함수를 배포하려면 AWS CLI, AWS Cloudformation 및 AWS SAM을 사용한 배포에 대한 공식 설명서를 참조하세요.
이벤트 모델은 AWS 이벤트 소스를 모델링하는 데 사용할 수 있습니다. 공식 문서에는 자세한 연습이 있습니다.