AWS CDK - Unable to increase Lambda timeout

Viewed 4631

My lambda function needs more time to execute so when I increase it

    const postReader_NewPost = new lambda.Function(this, 'PostReader_NewPost', {
      code: lambda.Code.fromAsset('lambda'),
      runtime: lambda.Runtime.PYTHON_2_7,
      handler: 'PostReader_NewPost.handler',
      timeout: Duration.seconds(300),
      description: "",
      environment: {
        "DB_TABLE_NAME": table.tableName,
        "SNS_TOPIC": topic.topicArn
      },
      role:role,
    });

I get the following error

Type 'import("c:/Users/myusername/Documents/GitHub/cdk_polly_website/node_modules/@aws-cdk/core/lib/duration").Duration' is not assignable to type 'import("c:/Users/myusername/Documents/GitHub/cdk_polly_website/node_modules/@aws-cdk/aws-dynamodb/node_modules/@aws-cdk/core/lib/duration").Duration'.
  Types have separate declarations of a private property 'amount'.ts(2322)
function.d.ts(68, 14): The expected type comes from property 'timeout' which is declared here on type 'FunctionProps'

I've declared on top of the class

import { Duration } from '@aws-cdk/core';

My package.json has following dependencies

"dependencies": {
    "@aws-cdk/aws-apigateway": "^1.88.0",
    "@aws-cdk/aws-dynamodb": "^1.88.0",
    "@aws-cdk/aws-iam": "^1.88.0",
    "@aws-cdk/aws-lambda": "^1.88.0",
    "@aws-cdk/aws-lambda-event-sources": "^1.88.0",
    "@aws-cdk/aws-sns": "^1.88.0",
    "@aws-cdk/aws-sns-subscriptions": "^1.88.0",
    "@aws-cdk/core": "1.88.0",
    "source-map-support": "^0.5.16"
  }

Appreciate help. Thanks

4 Answers

This way always works for me: aws-examples

Import core and then use Duration as core.Duration.

I'm not sure if it will help, but it looks like your core import is being taken from aws-dynamodb this way.

If this solves it, I'd like to investigate why.

Through npm ls I found that I don't have same version of different aws cdk libraries

npm ls
cdk_polly_website@0.1.0 C:\Users\amuham210\Documents\GitHub\cdk_polly_website
+-- @aws-cdk/assert@1.88.0
+-- @aws-cdk/aws-apigateway@1.89.0
+-- @aws-cdk/aws-dynamodb@1.89.0
+-- @aws-cdk/aws-iam@1.89.0
+-- @aws-cdk/aws-lambda-event-sources@1.89.0
+-- @aws-cdk/aws-lambda@1.89.0
+-- @aws-cdk/aws-sns-subscriptions@1.89.0
+-- @aws-cdk/aws-sns@1.89.0
+-- @aws-cdk/core@1.88.0
+-- @types/jest@26.0.20
+-- @types/node@10.17.27
+-- aws-cdk@1.88.0
+-- jest@26.6.3
+-- source-map-support@0.5.19
+-- ts-jest@26.5.1
+-- ts-node@9.1.1
`-- typescript@3.9.9

so I explicitly installed version to make it same

npm install @aws-cdk/core@1.89.0

This fixed the problem.

You are using different versions of @ aws-cdk / core and @ aws-cdk / aws-lambda.

import {Duration} from "@aws-cdk/core";

Add timeout variable in api.constructs file

timeout:Duration.seconds(30)

Related