The migration to a Graviton-based processor started as a small Proof of Concept (PoC) to investigate the work required to move Java-based containers in Fargate to Graviton. The PoC was successful, with very little work needed to migrate. The migration then also included all running AWS Lambda functions.
Code running in Lambda functions is written in Golang, requiring extra effort to compile towards ARM and Graviton. Since the managed Golang Lambda runtime is based on Amazon Linux, it doesn’t support Graviton. Therefore the migration was not as easy as flipping a switch.
To fully migrate the Golang-based Lambda Functions, we first needed to migrate to Lambda Custom runtime (provided.al2). Lambda functions were initially migrated from the managed runtime to the Custom runtime, remaining on X86 based processor. The second step was to update all CI/CD tooling to support compiling Golang code for the ARM-based processor. The switch was flipped to move the Lambda functions to Graviton in the final step.