
Go runtimes in AWS Lambda
Introduction AL2 runtimes and migrating from AL1 to AL2 for NodeJS, Python, Ruby, and .NET are pretty straightforward. The only exception is Go. Things are a bit cumbersome there as a custom runtime named provided.al2 comes into play. By the time of this writing, the following runtimes are provided by AWS: Name Identifier Operating system Architectures Node.js 18 nodejs18.x Amazon Linux 2 x86_64, arm64 Node.js 16 nodejs16.x Amazon Linux 2 x86_64, arm64 Node.js 14 nodejs14.x Amazon Linux 2 x86_64, arm64 Node.js 12 nodejs12.x Amazon Linux 2 x86_64, arm64 Python 3.9 python3.9 Amazon Linux 2 x86_64, arm64 Python 3.8 python3.8 Amazon Linux 2 x86_64, arm64 Python 3.7 python3.7 Amazon Linux x86_64 Java 11 java11 Amazon Linux 2 x86_64, arm64 Java 8 java8.al2 Amazon Linux 2 x86_64, arm64 Java 8 java8 Amazon Linux x86_64 .NET Core 3.1 dotnetcore3.1 Amazon Linux 2 x86_64, arm64 .NET 6 dotnet6 Amazon Linux 2 x86_64, arm64 .NET 5 dotnet5.0 Amazon Linux 2 x86_64 Go 1.x go1.x Amazon Linux x86_64 Ruby 2.7 ruby2.7 Amazon Linux 2 x86_64, arm64 Custom Runtime provided.al2 Amazon Linux 2 x86_64, arm64 Custom Runtime provided Amazon Linux x86_64 As can be seen above, the go1.x runtime is still on AL1 instead of AL2. One of the major differences between AL1 and AL2 is supported architectures. AL2 comes with arm64 support. To benefit from arm64 support, and to migrate to a more performance/cost-efficient AL2, provided.al2 is the only option for Go lambda functions. ...