I have written a simple hello world lambda function to deploy but after the command cdk deploy
it is giving this error. Can someone please guide about this?
Asked
Active
Viewed 5,443 times
2

John Rotenstein
- 241,921
- 22
- 380
- 470

Sameer
- 103
- 2
- 10
-
1Well the error message says you have uploaded an empty zip file. – Cyclonecode Dec 14 '21 at 22:45
-
Maybe related to https://stackoverflow.com/questions/65916681/uploaded-file-must-be-a-non-empty-zip-service-awslambdainternal-status-code? – Shawn Dec 15 '21 at 22:29
3 Answers
3
This issue might be caused by https://github.com/aws/aws-cdk/issues/12536. You should try:
- Upgrading node.js version
- Deleting
cdk.out
- Upgrade to latest CDK version
- Delete the asset directly from S3 (bucket will be something like
cdk-hnb659fds-assets-<ACCOUNT NUMBER>-<REGION>
) - Deploy again
CDK doesn't reupload the asset unless it changed. That's why deleting it and maybe forcing a change after upgrading node.js is required.
If all else fails, try the script I wrote that downloads the asset, fixes it by rezipping, and uploads it again. It's expecting to run in the root of your project as it looks for cdk.out
.
#!/bin/bash
set -ex
ASSEMBLY_DIRECTORY=`jq -r '.artifacts[] | select(.type == "cdk:cloud-assembly") | .properties.directoryName' cdk.out/manifest.json`
ASSET_MANIFESTS=`jq -r '.artifacts[] | select(.type == "cdk:asset-manifest") | .properties.file' cdk.out/$ASSEMBLY_DIRECTORY/manifest.json`
cd cdk.out/$ASSEMBLY_DIRECTORY
ASSETS=`jq -r '.files[].destinations[] | "s3://" + .bucketName + "/" + .objectKey' $ASSET_MANIFESTS | grep zip`
TMP=`mktemp -d`
cd $TMP
for ASSET in $ASSETS
do
if aws s3 ls $ASSET; then
aws s3 cp $ASSET pkg.zip
mkdir s
cd s
if ! unzip ../pkg.zip; then echo bad zip; fi
rm ../pkg.zip
zip -r ../pkg.zip * .gitempty
aws s3 cp ../pkg.zip $ASSET
cd ..
rm -rf s
fi
done
rm -rf $TMP
You can confirm you're having the same issue I was having by downloading the asset zip file. Try extracting it with unzip
. If it complains about the checksum or CRC, you had the same issue.

kichik
- 33,220
- 7
- 94
- 114
-
1Making a change to my TypeScript lambda and then redeploying fixed this issue for me – Adam Jan 17 '22 at 12:36
-
Thanks! Was running around in circles trying to fix this for the past couple days. Making a change to my lambda python function also fixed this issue for me. – ennuikiller Jun 04 '23 at 15:30
1
Steps helps to resolve it...
delete cdk.out (directory)
run command
- cdk synth
- cdk bootstrap
- cdk deploy

dave vedant
- 329
- 2
- 4
- 11