Building Lambda functions with Go
Go is implemented differently than other managed runtimes. Because Go compiles natively to an executable binary, it doesn't require a dedicated language runtime. Use an OS-only runtime (the provided
runtime family) to deploy Go functions to Lambda.
Topics
- Go runtime support
- Tools and libraries
- Define Lambda function handler in Go
- Using the Lambda context object to retrieve Go function information
- Deploy Go Lambda functions with .zip file archives
- Deploy Go Lambda functions with container images
- Working with layers for Go Lambda functions
- Log and monitor Go Lambda functions
- Instrumenting Go code in AWS Lambda
Go runtime support
The Go 1.x managed runtime for Lambda is deprecated. If you have functions that use the Go 1.x runtime, you must migrate your functions to provided.al2023
or provided.al2
. 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.
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 Migrating AWS Lambda functions from the Go1.x runtime to the custom runtime on Amazon Linux 2
Name | Identifier | Operating system | Deprecation date | Block function create | Block function update |
---|---|---|---|---|---|
OS-only Runtime |
|
Amazon Linux 2023 |
Not scheduled |
Not scheduled |
Not scheduled |
OS-only Runtime |
|
Amazon Linux 2 |
Not scheduled |
Not scheduled |
Not scheduled |
Tools and libraries
Lambda provides the following tools and libraries for the Go runtime:
-
AWS SDK for Go
: the official AWS SDK for the Go programming language. -
github.com/aws/aws-lambda-go/lambda
: The implementation of the Lambda programming model for Go. This package is used by AWS Lambda to invoke your handler. -
github.com/aws/aws-lambda-go/lambdacontext
: Helpers for accessing context information from the context object. -
github.com/aws/aws-lambda-go/events
: This library provides type definitions for common event source integrations. -
github.com/aws/aws-lambda-go/cmd/build-lambda-zip
: This tool can be used to create a .zip file archive on Windows.
For more information, see aws-lambda-go
Lambda provides the following sample applications for the Go runtime: