Building Lambda functions with Go - Amazon Lambda
Services or capabilities described in Amazon Web Services documentation might vary by Region. To see the differences applicable to the China Regions, see Getting Started with Amazon Web Services in China (PDF).

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.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.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.al2 runtime offers several advantages over go1.x, including support for the arm64 architecture (Amazon Graviton2 processors), smaller binaries, and slightly faster invoke times.

Custom
Name Identifier Operating system Architectures Deprecation (Phase 1)

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 Amazon SDK. This app uses the go1.x runtime.