Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update Node runtime for AWS Lambda functions #376

Open
jdno opened this issue Jan 2, 2024 · 3 comments
Open

Update Node runtime for AWS Lambda functions #376

jdno opened this issue Jan 2, 2024 · 3 comments
Assignees

Comments

@jdno
Copy link
Member

jdno commented Jan 2, 2024

AWS has been notifying us of the upcoming end of support of the Node 16 runtime for Lambda functions. The functions will continue to work, but cannot be updated from August 2024.

We can update our functions to the latest Node 20 runtime.

Checking the AWS Health Dashboard and the code search on GitHub, we currently have four Lambda functions that are deployed using the Node 16 runtime.

Resources

Announcement from AWS

Hello,

We are contacting you as we have identified that your AWS Account currently has one or more AWS Lambda functions using the Node.js 16 runtime.

We are ending support for Node.js 16 in Lambda on June 12, 2024. This follows Node.js 16 End-Of-Life (EOL) reached on September 11, 2023 [1].

As described in the Lambda runtime support policy [2], end of support for language runtimes in Lambda happens in several stages. Starting on June 12, 2024, Lambda will no longer apply security patches and other updates to the Node.js 16 runtime used by Lambda functions, and functions using Node.js 16 will no longer be eligible for technical support. Also, Node.js 16 will no longer be available in the Console, although you can still create and update functions using Node.js 16 via AWS CloudFormation, the AWS CLI, AWS SAM, or other tools. Starting July 15, 2024, you will no longer be able to create new Lambda functions using the Node.js 16 runtime. Starting August 15, 2024, you will no longer be able to update existing functions using the Node.js 16 runtime.

We recommend that you upgrade your existing Node.js 16 functions to Node.js 20 before June 12, 2024. A list of your Node.js 16 functions can be found in the 'Affected resources' tab of the AWS Health Dashboard.

End of support does not impact function execution. Your 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.

This notification is generated for functions using the Node.js 16 runtime for the $LATEST function version. The following command shows how to use the AWS CLI [3] to list all functions in a specific region using Node.js 16, including published function versions. To find all such functions in your account, repeat this command for each Region:

aws lambda list-functions --region us-west-2 --output text --query "Functions[?Runtime=='nodejs16.x'].FunctionArn"

From 180 days before deprecation, you can also use Trusted Advisor to identify all functions using the Node.js 16 runtime, including published function versions [4].

If you have any concerns or require further assistance, please contact AWS Support [5].

[1] https://github.com/nodejs/Release
[2] https://docs.aws.amazon.com/lambda/latest/dg/runtime-support-policy.html
[3] https://aws.amazon.com/cli/
[4] https://docs.aws.amazon.com/awssupport/latest/user/security-checks.html#aws-lambda-functions-deprecated-runtimes
[5] https://aws.amazon.com/support

Sincerely,
Amazon Web Services

@Mark-Simulacrum
Copy link
Member

Mark-Simulacrum commented Jan 3, 2024

Node 20 will require us to move to AWS SDK v3, most likely (see https://docs.aws.amazon.com/lambda/latest/dg/lambda-nodejs.html); that is going to be painful. I poked at doing this with the team repo function and the function itself is probably not too hard to rewrite:

const { CodeBuildClient, StartBuildCommand } = require("@aws-sdk/client-codebuild");

const client = new CodeBuildClient(config);

exports.handler = async function(event) {
    await client.send(new StartBuildCommand({
        projectName: 'sync-team',
    }));
};

However in order to actually integrate this to terraform we'll need an update of the aws terraform provider, since the 4.x series doesn't seem to support nodejs20.x.

I ran out of time for today to poke at this further.

@geektype
Copy link

geektype commented Feb 4, 2024

@jdno This is something I would be up to investigate. I can start sifting through the current TF codebase and identify steps needed to migrate to a more recent version of the TF provider. My only comment would be that this task is broader than the scope of this specific ticket so would it be OK if I spawn a new one that tracks the migration to 5.x Tf provider?

@jdno
Copy link
Member Author

jdno commented Feb 6, 2024

Hi @geektype,

Thanks for your interest in helping out, it's much appreciated. 🙂

But I fear that this might be a difficult issue for you to work on, since it's quite difficult to run Terraform without permissions. And since we need to rewrite at a minimum some of our Lambda functions, running Terraform and testing the changes on staging will probably be required. 😬

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: In Progress
Development

No branches or pull requests

4 participants