Reputation: 143
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?
Upvotes: 6
Views: 10000
Reputation: 2411
For me it occurred in WSL2.
It turned out it was introduced when I accidentaly npm i
ed in windows console.
Solution was then:
rm -r node_modules
rm -r cdk.out
npm i
cdk synth
Then cdk deploy
worked as expected. No bootstrapping necessary.
Upvotes: 0
Reputation: 717
Steps helps to resolve it...
delete cdk.out (directory)
run command
Upvotes: 5
Reputation: 34704
This issue might be caused by https://github.com/aws/aws-cdk/issues/12536. You should try:
cdk.out
cdk-hnb659fds-assets-<ACCOUNT NUMBER>-<REGION>
)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.
Upvotes: 4