首页 > 解决方案 > AWS CDK S3 部署错误 - 上传的文件必须是非空 zip

问题描述

我正在尝试使用带有 S3 和 S3 部署模块的 AWS CDK 将静态网页上传到 s3。问题是部署进展顺利,直到我收到一个错误,指出上传的文件必须是非空 zip。文档表明我应该能够使用目录,但我也尝试过使用 zip 文件,但同样的错误仍然存​​在。不知道如何进行。

在此处输入图像描述

import * as CDK from "@aws-cdk/core";
import * as S3 from "@aws-cdk/aws-s3";
import * as S3Deployment from "@aws-cdk/aws-s3-deployment";

const path = "../website.zip";

export class WebsiteStack extends CDK.Stack {
     constructor(app: CDK.App, id: string, props?: CDK.StackProps) {
      super(app, id, props);

const bucket = new S3.Bucket(this, "Files", {
  websiteIndexDocument: "index.html",
  publicReadAccess: true,
});

new S3Deployment.BucketDeployment(this, "Deployment", {
  sources: [S3Deployment.Source.asset(path)],
  destinationBucket: bucket,
  
});

new CDK.CfnOutput(this, "BucketDomain", {
  value: bucket.bucketWebsiteDomainName,
});

} }

标签: amazon-web-servicesamazon-s3aws-cdk

解决方案


如果您在 2021 年初执行此操作,请检查您使用的 NodeJS 版本。如果是 15.6 到 15.8,则引入了一个错误,该错误破坏了 .zip 文件的构建方式,从而导致了此错误。

CDK 错误是# 12536 ,上游 NodeJS 错误是#37027

恢复到 15.5 或更早版本应该可以解决这个问题,看起来 NodeJS 15.9 也可能已经解决了这个问题,但我还没有确认这一点。


推荐阅读