@aws-cdk/cdk-assets-lib

中文文档
1.5.2发布于 2026/10/31Apache-2.0TypeScriptCommonJS构建来源已验证近 30 天下载 87.4万

CDK 资产出版图书馆

中文使用文档
文档目录6 节
  1. 概览
  2. 使用量
  3. 示意图示例
  4. 占位符
  5. Docker 图像证书
  6. 使用 Drop- in Docker 替换

cdk -资产

用于向 AWS 环境发布 CDK 资产的库.

这是一个库,用于集成到应用程序中 CDK 工具包 国 际上传资产为 用户,使用 cdk-资产CLI

概览

@aws-cdk/cdk-assets-lib 需要名为资产表文件 assets.json,在 CDK 中 云会( C)cdk.out/assets.json) (中文(简体) ). 它将取走列入 清单,按要求编制,并上传到所示地点 名单.

目前支持以下资产类型:

  • 文件和档案,上传到S3
  • Docker 图像, 上传到 ECR
  • 外部公用设施所建的文件、档案和 Docker 图像

上传的 S3 桶和 ECR 寄存器预计已经存在 .

我们期望资产是不可改变的,我们期望资产是不可改变的 资产标识和目的地都反映出这一点。 这反映了 本身在以下行为中:

  • 如果指明的资产已在指定目的地存在,则该资产 将不会被包装和上传.
  • 如果一些本地缓存的文物(取决于资产类型) 本地 Docker 缓存中的图像) 已经以该资产的身份命名, 它 将不进行包装,而是直接上传到目的地 地点.

对于由外部公用事业建造的资产,合同规定为cdk资产 期望该工具能够管理去dupe检测以及路径/图像标记生成. 这意味着cdk-assets每一代都会调用外部的效用 (a) 决定是否采取 完全重建;和 (b) 仅返回 stdout 上的一件事: 文件/存档路径 资产,或本地 Docker 图像的名称.

使用量

用法是这样的:

const manifest = AssetManifest.fromPath(args.path);
const someAssets = manifest.select([DestinationPattern.parse('...')]);

// Or implement your own AWS host
const aws: IAws = new DefaultAwsClient('PROFILENAME');

// Or implement your own progress listener
const progressListener: IProgressListener = new ConsoleProgress();


const pub = new AssetPublishing(manifest, {
  aws,
  progressListener,
});

await pub.publish();

示意图示例

资产清单是这样的:

{
  "version": "1.22.0",
  "files": {
    "7aac5b80b050e7e4e168f84feffa5893": {
      "source": {
        "path": "some_directory",
        "packaging": "zip"
      },
      "destinations": {
        "us-east-1": {
          "region": "us-east-1",
          "assumeRoleArn": "arn:aws:iam::12345789012:role/my-account",
          "bucketName": "MyBucket",
          "objectKey": "7aac5b80b050e7e4e168f84feffa5893.zip"
        }
      }
    },
    "3dfe2b80b050e7e4e168f84feff678d4": {
      "source": {
        "executable": ["myzip"]
      },
      "destinations": {
        "us-east-1": {
          "region": "us-east-1",
          "assumeRoleArn": "arn:aws:iam::12345789012:role/my-account",
          "bucketName": "MySpecialBucket",
          "objectKey": "3dfe2b80b050e7e4e168f84feff678d4.zip"
        }
      }
    }
  },
  "dockerImages": {
    "b48783c58a86f7b8c68a4591c4f9be31": {
      "source": {
        "directory": "dockerdir"
      },
      "destinations": {
        "us-east-1": {
          "region": "us-east-1",
          "assumeRoleArn": "arn:aws:iam::12345789012:role/my-account",
          "repositoryName": "MyRepository",
          "imageTag": "b48783c58a86f7b8c68a4591c4f9be31",
          "imageUri": "123456789012.dkr.ecr.us-east-1.amazonaws.com/MyRepository:1234567891b48783c58a86f7b8c68a4591c4f9be31"
        }
      }
    },
    "d92753c58a86f7b8c68a4591c4f9cf28": {
      "source": {
        "executable": ["mytool", "package", "dockerdir"]
      },
      "destinations": {
        "us-east-1": {
          "region": "us-east-1",
          "assumeRoleArn": "arn:aws:iam::12345789012:role/my-account",
          "repositoryName": "MyRepository2",
          "imageTag": "d92753c58a86f7b8c68a4591c4f9cf28",
          "imageUri": "123456789987.dkr.ecr.us-east-1.amazonaws.com/MyRepository2:1234567891b48783c58a86f7b8c68a4591c4f9be31"
        }
      }
    }
  }
}

占位符

这个 destination 资产清单的区块可能包含下列区域: 和账户占位符 :

  • ${AWS::Region}
  • ${AWS::AccountId}

这些将取而代之的是目前配置的区域和账户ID aWS SDK(通过环境变量或 ~/.aws/... 配置文件).

  • 这个 ${AWS::AccountId} 占位符将 没有 之后重新评价 执行 AssumeRole 电话.
  • 若为 ${AWS::Region} 将主要替换为值 输入 region 键。 如果默认区域被设定,请离开 region 键出 的列表.

Docker 图像证书

对于 Docker 图像资产发布, cdk-assets 将 docker login 与 在建造和出版之前 docker文件可以在账户的ECR repo中引用图像.

cdk-assets 也可以配置为从ECR和 密钥管理器在构建前先创建证书配置 '~.克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克 CDK DOCKER CDES FILE环境变量. 证书文件有: 以下格式:

{
  "version": "1.0",
  "domainCredentials": {
    "domain1.example.com": {
      "secretsManagerSecretId": "mySecret", // Can be the secret ID or full ARN
      "roleArn": "arn:aws:iam::0123456789012:role/my-role" // (Optional) role with permissions to the secret
    },
    "domain2.example.com": {
      "ecrRepository": true,
      "roleArn": "arn:aws:iam::0123456789012:role/my-role" // (Optional) role with permissions to the repo
    }
  }
}

如果有证书文件, docker 将配置为使用 docker-credential-cdk-assets 列出每个域的证书助手 在文件中。 此助手将承担提供的角色( 如果有), 然后获取 登录来自 SecretsManager 或 ECR 的证书.

使用 Drop- in Docker 替换

默认情况下, AWS CDK 将使用 docker 命令。 然而,通过具体说明 CDK_DOCKER 环境变量, 您可以覆盖用于构建和发布您的命令 资产.

版本与发布记录

@aws-cdk/cdk-assets-lib 共发布 34 个版本,首次发布于 2025/06/25;过去 12 个月发布了 29 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
1.5.2latest2026/10/318 天前
1.5.12026/10/0830 天前
1.5.02026/09/042 个月前
1.4.172026/08/272 个月前
1.4.162026/08/202 个月前
1.4.152026/07/233 个月前

关于 @aws-cdk/cdk-assets-lib 的常见问题

@aws-cdk/cdk-assets-lib 是什么?

CDK 资产出版图书馆

如何安装 @aws-cdk/cdk-assets-lib?

在项目目录运行 npm install @aws-cdk/cdk-assets-lib,或使用 pnpm add / yarn add / bun add。

@aws-cdk/cdk-assets-lib 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@aws-cdk/cdk-assets-lib 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@aws-cdk/cdk-assets-lib 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >= 18.0.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@aws-cdk/cdk-assets-lib 可以商用吗?

@aws-cdk/cdk-assets-lib 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@aws-cdk/cdk-assets-lib 的下载量有多少?

根据 npm 官方下载统计,@aws-cdk/cdk-assets-lib 在 2026/10/08 – 2026/11/06 这 30 天内被下载 874,419 次,日均约 29,147 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@aws-cdk/cdk-assets-lib 还在维护吗?

最新版本 1.5.2 发布于 2026/10/31(8 天前);至今共发布 34 个版本,其中过去 12 个月发布了 29 个;首次发布于 2025/06/25。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。