powertools-lambda-typescript icon indicating copy to clipboard operation
powertools-lambda-typescript copied to clipboard

Deprecation (logger, tracer, metrics): End Of Support of Node.js 12 runtime

Open saragerion opened this issue 2 years ago • 3 comments

IMPORTANT: this unit of work should be released only after the deprecation takes place for customers, so after December 14, 2022.

Description of the feature request

Problem statement

AWS is ending support for Node.js 12 in AWS Lambda. This follows Node.js 12 End-Of-Life (EOL) reached on April 30, 2022.
Starting November 14, 2022, Lambda will no longer apply security patches and other updates to the Node.js 12 runtime used by Lambda functions, and functions using Node.js 12 will no longer be eligible for technical support. In addition, customers will no longer be able to create new Lambda functions using the Node.js 12 runtime.
Starting December 14, 2022, customers will no longer be able to update existing functions using the Node.js 12 runtime.

Summary of the feature

Remove support and references of Node.js 12 included but not limited to:

  • CI/CD pipelines
  • Documentation (readme, docs)
  • Examples

Code examples

Benefits for you and the wider AWS community

Migration to the latest stable Node.js runtime with improved performance and new features.

Describe alternatives you've considered

N/A

Additional context

AWS recommends that customers upgrade their existing Node.js 12 functions to Node.js 16 before November 14, 2022.
End of support does not impact function execution. Customer's functions will continue to run. However, they will be running on an unsupported runtime which is no longer maintained or patched by the AWS Lambda team.

The following command shows how to use the AWS CLI to list all functions in a specific region using Node.js 12. To find all such functions in an AWS account, customers can repeat this command for each region:

aws lambda list-functions --function-version ALL --region us-east-1 --output text --query "Functions[?Runtime=='nodejs12.x'].FunctionArn"

For more information, refer to the AWS Lambda runtime deprecation policy.

Related issues, RFCs

N/A

saragerion avatar Aug 15 '22 07:08 saragerion

IMPORTANT: this unit of work should be released only after the deprecation takes place for customers, so after December 14, 2022.

saragerion avatar Aug 15 '22 07:08 saragerion

Note for implementer. Please check if we can also update the target from ES2019 to a newer version. It was implemented in this PR: https://github.com/awslabs/aws-lambda-powertools-typescript/pull/925

ijemmy avatar Aug 15 '22 07:08 ijemmy

I think we should instead drop support at the latest on November 14 (a month before) & indicate the last release before then as the last supporting NodeJS 12. In the messaging shared via email (& that you copied above) it says that after this date it worn't be possible to create new functions using the runtime. This means we won't be able to run e2e tests after that date.

In theory we could modify our e2e tests to reuse an existing Lambda function instead of creating a new one, but personally I don't think it's worth the effort.

As additional data points:

  • The AWS SDK v3 for NodeJS will deprecate the runtime a month and half before that (1 November) - link.
  • Depending on where we stand with the upcoming utilities (Idempotency & Parameters), if we were tu support NodeJS 12 for longer, we'd be doing so without official support of the main dependency (aws-sdk).

My vote would be to align with the AWS SDK v3 timeline instead.

dreamorosi avatar Aug 15 '22 10:08 dreamorosi

Deprecation date has been postponed to Mar 31, 2023 so we can put this task on hold.

I have updated the issue body to reflect the change. We'll revisit this later on.

dreamorosi avatar Oct 19 '22 10:10 dreamorosi

CDK has marked the runtime as deprecated (2.43.0): https://github.com/aws/aws-cdk/commit/b8c2abf06ba14f9c356864aba91180a55cbd9c3b

Jest has dropped support for Node 12 with 29.x: https://github.com/facebook/jest/releases/tag/v29.0.0-alpha.0

dreamorosi avatar Nov 10 '22 15:11 dreamorosi

Hi everyone, just wanted to share that AWS Lambda Powertools for TypeScript is planning on officially dropping support for Nodejs 12.x by the end of the year. This means that v1.5.0 will be the last release that supports the runtime.

At the time of writing, AWS Lambda plans to end support for the runtime at the end of March 2023. Similar to what done by a large portion of the Nodejs ecosystem, other AWS projects like CDK and the SDK v3 have already either marked the runtime as deprecated or removed support for it.

By following this path we'll be able to continue implementing the new Parameters and Idempotency utilities, which depend on AWS SDK v3, and also continue run full integration tests on each merged PR, a process that relies on CDK.

For those of you who are still using the Nodejs 12.x runtime, we strongly recommend you to upgrade your Lambda functions to Nodejs 16.x or later.

dreamorosi avatar Dec 13 '22 16:12 dreamorosi

⚠️ COMMENT VISIBILITY WARNING ⚠️

Comments on closed issues are hard for our team to see. If you need more assistance, please either tag a team member or open a new issue that references this one. If you wish to keep having a conversation with other community members under this issue feel free to do so.

github-actions[bot] avatar Dec 15 '22 14:12 github-actions[bot]