On October 31, 2026, AWS Lambda deprecated its Python 3.10 runtime (python3.10). The .NET 8 runtime (dotnet8) is scheduled to follow on November 10, 2026, along with the container-only .NET 9 runtime. Both dates track the upstream projects. The Python developer guide lists Python 3.10 as end of life since October 1, 2026, and Microsoft lists November 10, 2026 as the end of support for both .NET 8 and .NET 9. AWS publishes its runtime dates for planning and says they are subject to change.
What deprecation changes, and what it does not
Deprecation does not switch your functions off. AWS says you can continue to invoke functions on a deprecated runtime indefinitely. What changes is support and, later, your ability to deploy.
- After deprecation, AWS may no longer apply security patches or other updates to the runtime, and functions that use it are no longer eligible for technical support.
- AWS states that Lambda does not apply security patches to a programming language runtime after that language version reaches its end of support date.
- From the deprecation date, you can no longer create or update functions on the runtime in the Lambda console. The AWS CLI, AWS SAM, and CloudFormation still work.
- On July 29, 2027, Lambda begins blocking the creation of new functions on python3.10 and dotnet8. On August 31, 2027, it begins blocking updates to the code and configuration of existing functions.
- You can still move a function to a supported runtime after updates are blocked, but AWS warns that rolling back to the deprecated runtime may be blocked.
AWS also warns that "Functions that use a deprecated runtime may also experience degraded performance or other issues, such as a certificate expiry, that can cause them to stop working properly."
Choosing the target runtime
AWS says it cannot guarantee backward compatibility between major language versions, so changing the runtime is your job, and it needs testing. The target you pick decides how soon you repeat the work.
- Python 3.10 and Python 3.11 both run on Amazon Linux 2, which AWS lists as reaching end of life on June 30, 2026. The python3.11 runtime is scheduled for deprecation on June 30, 2027.
- The python3.12, python3.13, and python3.14 runtimes run on Amazon Linux 2023. Their scheduled deprecation dates are October 31, 2028 for 3.12 and June 30, 2029 for 3.13 and 3.14.
- For .NET, the dotnet10 runtime runs on Amazon Linux 2023 and is scheduled for deprecation on November 14, 2028.
- AWS recommends upgrading to an Amazon Linux 2023 based runtime as soon as possible.
Steps for platform teams
- Build an inventory. AWS documents this CLI command, which lists every function version on a runtime in one Region: aws lambda list-functions --function-version ALL --region us-east-1 --output text --query "Functions[?Runtime=='python3.10'].FunctionArn". Repeat it for each Region and each account, and again for dotnet8.
- Use AWS Config advanced queries to cover many accounts and Regions at once. Note that they return only $LATEST versions.
- Check the Trusted Advisor check named AWS Lambda Functions Using Deprecated Runtimes on the Security page. It lists both $LATEST and published versions and updates as you fix them. Health Dashboard notices expire 90 days after deprecation, so do not rely on them alone.
- Look separately at container images. AWS does not send deprecation notifications for functions deployed as container images, and rebuilding from a supported base image is your responsibility. Search your Dockerfiles for Python 3.10 and .NET 8 base images.
- Prioritize by use. The CloudWatch Invocations metric and the last event time in each function's log group show which functions are busy and which may be retired instead.
- Roll out safely. AWS recommends testing with the new runtime before production and using function versions and aliases so you can roll back.
- Fix the source, not just the function. Update the runtime setting in your templates and pipelines so the next deployment does not quietly restore the old value.
The block dates are almost a year away, but upstream security support for Python 3.10 has already ended. Treat the inventory as this month's work and the upgrades as a tracked backlog with owners and dates.