Building Lambda functions with Go - AWS Lambda

Building Lambda functions with Go

Go is implemented differently than other managed runtimes. Because Go compiles to native code, Lambda treats Go as a custom runtime. We recommend that you use the provided.al2023 or provided.al2 runtime to deploy Go functions to Lambda.

Go runtime support

The Go 1.x managed runtime for Lambda is based on the Amazon Linux AMI (AL1). Lambda will continue to support the Go 1.x managed runtime until maintenance support for the Amazon Linux AMI ends on December 31, 2023. If you're using the Go 1.x runtime, you must migrate your functions to provided.al2023 or provided.al2. No code changes are required for this migration. The only required changes relate to how you build your deployment package and which runtime you use to create your function. For more information, see the deployment instructions for .zip packages and container images.

Go
Name Identifier Operating system Architectures Deprecation (Phase 1)

Go 1.x

go1.x

Amazon Linux

x86_64

Dec 31, 2023

The provided.al2023 and provided.al2 runtimes offer several advantages over go1.x, including support for the arm64 architecture (AWS Graviton2 processors), smaller binaries, and slightly faster invoke times.

Custom
Name Identifier Operating system Architectures Deprecation (Phase 1)

Custom Runtime

provided.al2023

Amazon Linux 2023

x86_64, arm64

Custom Runtime

provided.al2

Amazon Linux 2

x86_64, arm64

Custom Runtime

provided

Amazon Linux

x86_64

Dec 31, 2023

Tools and libraries

Lambda provides the following tools and libraries for the Go runtime:

For more information, see aws-lambda-go on GitHub.

Lambda provides the following sample applications for the Go runtime:

Sample Lambda applications in Go
  • go-al2 – A hello world function that returns the public IP address. This app uses the provided.al2 custom runtime.

  • blank-go – A Go function that shows the use of Lambda's Go libraries, logging, environment variables, and the AWS SDK. This app uses the go1.x runtime.