如何使用 CDK 将 zip 上传到 S3

How to upload a zip to S3 with CDK

我正在构建一个 CDK 库,并尝试将一个 zip 文件夹上传到 S3,稍后我可以将其用于 Lambda 部署。我在网上找到了很多使用方向aws_s3_deployment

该构造的问题在于它加载了 zip 的内容而不是 zip 本身。我试图将一个 zip 压缩到一个 zip 中,但这不起作用。我也试过压缩一个文件夹,但这也不起作用。我看到的行为是 S3 中没有显示任何内容,CDK 也没有错误。还有其他方法可以将 zip 加载到 S3 吗?

你要找的是aws-s3-assets module. It allows you to define either directories (which will be zipped) or regular files as assets that the CDK will upload to S3 for you. Using the attributes你可以参考的资产

documentation 有这个例子:

import { Asset } from 'aws-cdk-lib/aws-s3-assets';

// Archived and uploaded to Amazon S3 as a .zip file
const directoryAsset = new Asset(this, "SampleZippedDirAsset", {
  path: path.join(__dirname, "sample-asset-directory")
});

// Uploaded to Amazon S3 as-is
const fileAsset = new Asset(this, 'SampleSingleFileAsset', {
  path: path.join(__dirname, 'file-asset.txt')
});