@capraconsulting/webapp-deploy-lambda

中文文档
2.5.201发布于 2026/11/09Apache-2.0TypeScriptES Module零依赖构建来源已验证近 30 天下载 1.3万

用于向 S3 和 CloudFront 部署 Webapp 版本的 CDK 构建

中文使用文档
文档目录4 节
  1. 保存旧文件
  2. 触发部署
  3. 发展
  4. 页:1

用于部署 Webapp 释放的 CDK 构造

此工程包含一个用于 AWS Lambda 函数处理的 CDK 构造 向 S3 桶部署捆绑的静态网络应用程序 在一段时间内保存以前部署的文件 阈值.

它会做什么:

  1. 从 S3 获取部署日志
  2. 以可选过滤方式获取捆绑的文物并提取本地
  3. 上传所有非html文件到 S3
  4. 上传 html 文件到 S3
  5. 将上传的项目添加到部署日志
  6. 从 S3 中删除旧项目
  7. 部署日志中的旧部署
  8. 下次运行时将部署日志存储到 S3
  9. 可选择无效 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 共发布 232 个版本,首次发布于 2020/06/18;过去 12 个月发布了 199 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
2.5.201latest2026/11/09今天
2.5.2002026/11/081 天前
2.5.1992026/11/036 天前
2.5.1982026/11/027 天前
2.5.1972026/11/017 天前
2.5.1962026/10/319 天前

其他发布通道:alpha → 2.0.0-alpha.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 和提交记录判断。