Skip to content

‼️ NOTICE: 'Error: ENOTDIR invalid cwd' on cdk deploy in 1.90.0 #13131

@qs-wang

Description

@qs-wang

Please add your +1 👍 to let us know you have encountered this

Update

Version 1.90.1 which includes a fix is now released.


There is an issue with the way the CDK assets mechanism identifies already .zip file. Currently it will try to zip the already zipped file that will throw an error. We are working on a fix.

Workaround

TL;DR: delete the cdk.out folder before executing cdk deploy

The issue occurs when executing cdk deploy when there is a .zip file in the cdk.out folder. This happens when executing cdk synth - which creates the cdk.out folder, followed by cdk deploy (which is a completely normal cdk flow). To workaround this, delete the cdk.out folder before executing cdk deploy.

Repro

Any application which includes an asset with a .zip file will fail to deploy:

new lambda.Function(this, 'MyLambda', {
      code: lambda.Code.fromAsset(path.join(__dirname, '../my-zip.zip')),
      handler: 'index.handler',
      runtime: lambda.Runtime.NODEJS_12_X
 })

important: execute cdk synth before executing cdk deploy

cdk deploy will throw:

UnhandledPromiseRejectionWarning: Error: ENOTDIR invalid cwd 

Status: Working on a patch release

Overview:

When running cdk deploy in version 1.90.0 on a Stack that contains assets, you might see an error like 'Error: ENOTDIR invalid cwd.

Complete Error Message:

$ npx cdk deploy --require-approval=never 
Bug13131Stack: deploying...
[0%] start: Publishing e9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68:current
(node:81012) UnhandledPromiseRejectionWarning: Error: ENOTDIR invalid cwd /Users/adamruka/workplace/cdk/on-call/bug-13131/cdk.out/asset.e9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68.zip
    at GlobSync._readdirError (/Users/adamruka/workplace/cdk/on-call/bug-13131/node_modules/aws-cdk/node_modules/glob/sync.js:324:21)
    at GlobSync._readdir (/Users/adamruka/workplace/cdk/on-call/bug-13131/node_modules/aws-cdk/node_modules/glob/sync.js:290:10)
    at GlobSync._processGlobStar (/Users/adamruka/workplace/cdk/on-call/bug-13131/node_modules/aws-cdk/node_modules/glob/sync.js:350:22)
    at GlobSync._process (/Users/adamruka/workplace/cdk/on-call/bug-13131/node_modules/aws-cdk/node_modules/glob/sync.js:130:10)
    at new GlobSync (/Users/adamruka/workplace/cdk/on-call/bug-13131/node_modules/aws-cdk/node_modules/glob/sync.js:48:10)
    at Function.globSync [as sync] (/Users/adamruka/workplace/cdk/on-call/bug-13131/node_modules/aws-cdk/node_modules/glob/sync.js:26:10)
    at Promise (/Users/adamruka/workplace/cdk/on-call/bug-13131/node_modules/aws-cdk/node_modules/cdk-assets/lib/private/archive.ts:17:24)
    at new Promise (<anonymous>)
    at Object.zipDirectory (/Users/adamruka/workplace/cdk/on-call/bug-13131/node_modules/aws-cdk/node_modules/cdk-assets/lib/private/archive.ts:7:10)
    at FileAssetHandler.packageFile (/Users/adamruka/workplace/cdk/on-call/bug-13131/node_modules/aws-cdk/node_modules/cdk-assets/lib/private/handlers/files.ts:78:13)
(node:81012) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 2)
(node:81012) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

Original bug report

My CDK script was all right, but was failing with the latest 1.90.0 version

Reproduction Steps

Run the CDK script via gitlab pipeline

What did you expect to happen?

No errors

What actually happened?

See the error message as below:

xxxx- infra-Dev: deploying...
[0%] start: Publishing 45f6bfc57a7695260616f2916fbef2dd77200af18743d956a59c8db9c3816b3f:current
(node:55) UnhandledPromiseRejectionWarning: Error: ENOTDIR invalid cwd /builds/xxxx/cdk.out/asset.45f6bfc57a7695260616f2916fbef2dd77200af18743d956a59c8db9c3816b3f.sh
    at GlobSync._readdirError (/usr/local/lib/node_modules/aws-cdk/node_modules/glob/sync.js:324:21)
    at GlobSync._readdir (/usr/local/lib/node_modules/aws-cdk/node_modules/glob/sync.js:290:10)
    at GlobSync._processGlobStar (/usr/local/lib/node_modules/aws-cdk/node_modules/glob/sync.js:350:22)
    at GlobSync._process (/usr/local/lib/node_modules/aws-cdk/node_modules/glob/sync.js:130:10)
    at new GlobSync (/usr/local/lib/node_modules/aws-cdk/node_modules/glob/sync.js:48:10)
    at Function.globSync [as sync] (/usr/local/lib/node_modules/aws-cdk/node_modules/glob/sync.js:26:10)
    at /usr/local/lib/node_modules/aws-cdk/node_modules/cdk-assets/lib/private/archive.ts:17:24
    at new Promise (<anonymous>)
    at Object.zipDirectory (/usr/local/lib/node_modules/aws-cdk/node_modules/cdk-assets/lib/private/archive.ts:7:10)
    at FileAssetHandler.packageFile (/usr/local/lib/node_modules/aws-cdk/node_modules/cdk-assets/lib/private/handlers/files.ts:78:13)
(node:55) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 2)
(node:55) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
Environment
  • CDK CLI Version : 1.90.0
  • **Framework Version: **1.90.0
  • **Node.js Version: **12
  • OS : Docker
  • Language (Version): Python (3.8)
Other

Rollback to 1.89.0 fixed the problem


This is 🐛 Bug Report

Metadata

Metadata

Assignees

Labels

bugThis issue is a bug.management/trackingIssues that track a subject or multiple issuesp0

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions