用于部署 Webapp 释放的 CDK 构造
此工程包含一个用于 AWS Lambda 函数处理的 CDK 构造
向 S3 桶部署捆绑的静态网络应用程序
在一段时间内保存以前部署的文件
阈值.
它会做什么:
- 从 S3 获取部署日志
- 以可选过滤方式获取捆绑的文物并提取本地
- 上传所有非html文件到 S3
- 上传 html 文件到 S3
- 将上传的项目添加到部署日志
- 从 S3 中删除旧项目
- 部署日志中的旧部署
- 下次运行时将部署日志存储到 S3
- 可选择无效 CloudFront 分布
保存旧文件
使用代码拆分的单页应用程序会导致客户端
推迟装入许多文件 。 为了避免部署干扰用户,我们
无法删除先前的文件( 例如使用 aws s3 sync --delete),作为
这会导致客户端在浏览应用程序时出现404个错误.
CloudFront 在许多情况下会为大多数用户隐藏这个问题,原因是
它的边缘缓存, 但对于没有的用户来说仍然是个问题
自前一天起更新申请.
处理这个问题的一个方法是永远不要删除任何文件
S3水桶(英语:S3 buckle). 这意味着桶会填满很多旧文件.
此项目通过删除旧文件的方式处理它.
仍在使用五天前部署的应用程序的用户不应
被打乱。 为了遵守这个承诺 我们保留最新的部署
5天多前发生的,删除旧文件中没有的文件
更应该提到它们.
触发部署
aws lambda invoke \
--function-name my-deploy-lambda \
--payload '{
"ResourceProperties": {
"artifactS3Url": "s3://my-bucket/my-release.tgz"
},
"RequestType": "Update"
}' \
/tmp/out.log
发展
本地测试 :
$ uv sync
# Adjust to your project. See config.py for full list.
$ export TARGET_BUCKET_URL=s3://my-website/web
$ export EXPIRE_SECONDS=86400
$ export DEPLOY_LOG_BUCKET_URL=s3://my-website/deployments.log
$ export CF_DISTRIBUTION_ID=EKJ2IPY1KTEAR1
# Adjust artifact path.
$ uv run python -m webapp_deploy.main s3://my-bucket/my-release.tgz
页:1
- 为了避免在使用和更新部署日志时出现种族条件,不
应允许同时执行羊肉.
关于 @capraconsulting/webapp-deploy-lambda 的常见问题
@capraconsulting/webapp-deploy-lambda 是什么?
用于向 S3 和 CloudFront 部署 Webapp 版本的 CDK 构建
如何安装 @capraconsulting/webapp-deploy-lambda?
在项目目录运行 npm install @capraconsulting/webapp-deploy-lambda,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:constructs(^10.0.0)、aws-cdk-lib(^2.0.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。
@capraconsulting/webapp-deploy-lambda 支持 TypeScript 吗?
支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。
@capraconsulting/webapp-deploy-lambda 支持 ESM 还是 CommonJS?
以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。
@capraconsulting/webapp-deploy-lambda 可以商用吗?
@capraconsulting/webapp-deploy-lambda 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。
@capraconsulting/webapp-deploy-lambda 的下载量有多少?
根据 npm 官方下载统计,@capraconsulting/webapp-deploy-lambda 在 2026/10/09 – 2026/11/07 这 30 天内被下载 13,270 次,日均约 442 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。
@capraconsulting/webapp-deploy-lambda 还在维护吗?
最新版本 2.5.201 发布于 2026/11/09(今天);至今共发布 232 个版本,其中过去 12 个月发布了 199 个;首次发布于 2020/06/18。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。