Skip to main content

Lambda: Modernize x86 to Arm

Updated over a week ago

Difficulty: Medium

Description

We have identified Lambda functions in your account that are running on the x86_64 architecture. Migrating eligible functions to the Arm64 architecture can reduce costs by up to 20% and improve performance efficiency. We recommend evaluating and modernizing these functions where compatibility allows.

Selection Criteria

  • The Lambda function uses the x86_64 architecture

  • The function uses a runtime compatible with Arm64 (Python, Node.js, Java, Go, Ruby, .NET) — for container image-based functions, the image must be rebuilt for Arm64

  • The function has been invoked within the last 30 days (non-idle)

  • All Lambda Layers used by the function have an Arm64-compatible version available

Expected Saving

Arm64 (Graviton2) reduces Lambda duration costs by approximately 20% compared to x86_64:

Architecture

Price per GB-second (us-east-1)

Savings vs x86_64

x86_64

$0.0000001667

Arm64 (Graviton2)

$0.0000001333

~20%

Note: Savings apply only to Duration charges. Request charges ($0.20 per 1M requests) are the same for both architectures.

Example: A function with 512 MB memory, 1,000,000 invocations/month, average duration 500ms:

  • x86_64: 512 MB × 0.5s × 1M × $0.0000001667 = $42.67/month

  • Arm64: 512 MB × 0.5s × 1M × $0.0000001333 = $34.13/month

  • Savings: ~$8.50/month (~20%) per function

Operational Impact

  • Downtime: Minimal — the architecture change is applied in-place via a function configuration update; existing in-flight invocations during the update may fail briefly.

  • Breaking changes: Code compiled with native binaries or C extensions must be recompiled for Arm64. Pure-runtime functions (Python, Node.js, etc.) typically require no code changes.

  • Recovery: Revert to x86_64 in the function configuration at any time — no redeployment of code required.

  • ⚠️ Warning — Container image-based functions: If the Lambda function uses a Docker container image, the image must be rebuilt and pushed as an Arm64 (or multi-arch) image. The runtime field should display "Image" or "N/A" in this case.

  • ⚠️ Warning — Lambda Layers: Third-party Lambda Layers may not have an Arm64-compatible version. Verify all layers support Arm64 before migrating.

  • ⚠️ Warning — Native extensions: Functions using FFI, Cython, or compiled C/Rust extensions must be verified and recompiled for Arm64 before migration.

References

Did this answer your question?