From ca42461acd4f42a8bd7c0fb05788c7ea50834de2 Mon Sep 17 00:00:00 2001 From: Jonathan Goldwasser Date: Thu, 18 Mar 2021 14:40:20 +0100 Subject: [PATCH] chore(lambda-nodejs): update default runtime (#13664) If the installed node version is >= 14, use Node.js 14.x. Otherwise, use Node.js 12.x. This removes a default on the deprecated Node.js 10.x runtime. BREAKING CHANGE: the default runtime of a `NodejsFunction` is now Node.js 14.x if the environment from which it is deployed uses Node.js >= 14 and Node.js 12.x otherwise. ---- *By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license* --- packages/@aws-cdk/aws-lambda-nodejs/lib/function.ts | 10 +++++----- .../@aws-cdk/aws-lambda-nodejs/test/function.test.ts | 6 ++++++ 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/packages/@aws-cdk/aws-lambda-nodejs/lib/function.ts b/packages/@aws-cdk/aws-lambda-nodejs/lib/function.ts index 680a6f7330356..afa3d93d21a9b 100644 --- a/packages/@aws-cdk/aws-lambda-nodejs/lib/function.ts +++ b/packages/@aws-cdk/aws-lambda-nodejs/lib/function.ts @@ -34,8 +34,8 @@ export interface NodejsFunctionProps extends lambda.FunctionOptions { * The runtime environment. Only runtimes of the Node.js family are * supported. * - * @default - `NODEJS_12_X` if `process.versions.node` >= '12.0.0', - * `NODEJS_10_X` otherwise. + * @default - `NODEJS_14_X` if `process.versions.node` >= '14.0.0', + * `NODEJS_12_X` otherwise. */ readonly runtime?: lambda.Runtime; @@ -105,9 +105,9 @@ export class NodejsFunction extends lambda.Function { // Entry and defaults const entry = path.resolve(findEntry(id, props.entry)); const handler = props.handler ?? 'handler'; - const defaultRunTime = nodeMajorVersion() >= 12 - ? lambda.Runtime.NODEJS_12_X - : lambda.Runtime.NODEJS_10_X; + const defaultRunTime = nodeMajorVersion() >= 14 + ? lambda.Runtime.NODEJS_14_X + : lambda.Runtime.NODEJS_12_X; const runtime = props.runtime ?? defaultRunTime; super(scope, id, { diff --git a/packages/@aws-cdk/aws-lambda-nodejs/test/function.test.ts b/packages/@aws-cdk/aws-lambda-nodejs/test/function.test.ts index d898d312be92c..ce47a718b9e35 100644 --- a/packages/@aws-cdk/aws-lambda-nodejs/test/function.test.ts +++ b/packages/@aws-cdk/aws-lambda-nodejs/test/function.test.ts @@ -7,6 +7,7 @@ import { Runtime } from '@aws-cdk/aws-lambda'; import { Stack } from '@aws-cdk/core'; import { NodejsFunction } from '../lib'; import { Bundling } from '../lib/bundling'; +import { nodeMajorVersion } from '../lib/util'; jest.mock('../lib/bundling', () => { return { @@ -35,8 +36,13 @@ test('NodejsFunction with .ts handler', () => { entry: expect.stringContaining('function.test.handler1.ts'), // Automatically finds .ts handler file })); + const runtime = nodeMajorVersion() >= 14 + ? Runtime.NODEJS_14_X + : Runtime.NODEJS_12_X; + expect(stack).toHaveResource('AWS::Lambda::Function', { Handler: 'index.handler', + Runtime: runtime.name, }); });