@cdk8s/awscdk-resolver

中文文档
0.0.728发布于 2026/11/07Apache-2.0TypeScriptCommonJS构建来源已验证近 30 天下载 5622

这个 AwsCdkResolver 能够解决任何 CfnOutput 由您的 AWS CDK 应用程序定义。 在这个例子中,我们创建一个S3 Bucket 使用 AWS CDK,并通过其(部署时间g)

中文使用文档

AWS CDK 解析器

这个 AwsCdkResolver 能够解决任何 CfnOutput 由您的 AWS CDK 应用程序定义。 在这个例子中,我们创建一个S3 Bucket 与 AWS CDK 连接,并传递其( 所生成的部署时间) 名称为 Kubernetes 的环境变量 CronJob 资源.

import * as aws from 'aws-cdk-lib';
import * as k8s from 'cdk8s';
import * as kplus from 'cdk8s-plus-27';

import { AwsCdkResolver } from '@cdk8s/awscdk-resolver';

const awsApp = new aws.App();
const stack = new aws.Stack(awsApp, 'aws');

const k8sApp = new k8s.App({ resolvers: [new AwsCdkResolver()] });
const manifest = new k8s.Chart(k8sApp, 'Manifest');

const bucket = new aws.aws_s3.Bucket(stack, 'Bucket');
const bucketName = new aws.CfnOutput(stack, 'BucketName', {
  value: bucket.bucketName,
});

new kplus.CronJob(manifest, 'CronJob', {
  schedule: k8s.Cron.daily(),
  containers: [{
    image: 'job',
    envVariables: {
      // directly passing the value of the `CfnOutput` containing 
      // the deploy time bucket name
      BUCKET_NAME: kplus.EnvValue.fromValue(bucketName.value),
    }
 }]
});

awsApp.synth();
k8sApp.synth();

在cdk8s合成过程中,自定义解析器会检测到 bucketName.value 这不是一个具体的价值, 但它是一个价值 CfnOutput然后它将执行AWS服务呼叫,以便获取 实际价值来自您账户中部署的基础设施。 这意味着,按照顺序 页:1 cdk8s synth 要成功,必须执行 之后 aWS CDK 资源 已经部署。 因此,你的部署工作流程(概念上)应该是:

  1. cdk deploy
  2. cdk8s synth

注意 AwsCdkResolver 实值 仅限 能够获取具有 CfnOutput 为他们定义.

权限

自运行以来 cdk8s synth 现在需要执行AWS服务电话,它必须能够访问 到一组AWS证书。 全权证书必须允许下列一系列行动:

  • cloudformation:DescribeStacks

请注意,cdk8要求的行动比通常需要的行动要小得多 部署 AWS CDK 应用程序。 因此建议不重复使用同样的一套全权证书, 转而建立一个缩小范围 ReadOnly 用于 cdk8s 解析器的角色.

交叉仓库工作流程

正如我们所看到的,你的 cdk8s 应用程序需要访问您云应用程序中定义的对象。 如果两个申请 定义在同一文件中,这是微不足道的实现。 如果放在不同的文件里 很简单 import 说明就够了. 然而,如果这些应用程序在两个单独的储存库中管理,怎么办? 这使得它有点狡猾,但仍有可能.

在这种情况下, cdk.ts 在 AWS CDK 应用程序中,存储在一个专用寄存器中.

import * as aws from 'aws-cdk-lib';

const awsApp = new aws.App();
const stack = new aws.Stack(awsApp, 'aws');

const bucket = new aws.aws_s3.Bucket(stack, 'Bucket');
const bucketName = new aws.CfnOutput(stack, 'BucketName', {
  value: bucket.bucketName,
});

awsApp.synth();

为了 cdk8s 应用程序具有交叉寄存器访问, 我们需要曝光 AWS CDK 对象实例 通过软件包寄存器。 为此,将 AWS CDK 应用程序分解为以下文件:

app.ts

import * as aws from 'aws-cdk-lib';

const awsApp = new aws.App();
const stack = new aws.Stack(awsApp, 'aws');

const bucket = new aws.aws_s3.Bucket(stack, 'Bucket');
// export the thing we want to have available for cdk8s applications
export const bucketName = new aws.CfnOutput(stack, 'BucketName', {
  value: bucket.bucketName,
});

// note that we don't call awsApp.synth here

main.ts

import { awsApp } from './app.ts'

awsApp.synth();

现在,发表 app.ts 文件到软件包管理器,以便您 cdk8s 应用程序可以安装并导入. 这种方法可能有些反常, 因为通常我们只公布课程 给软件包管理者, 非实例。 实际上,这些类型的应用程序引入了一个新的使用案例,需要共享实例. 从概念上来说,这和写作状态没什么不同* 联合国 它允许我们留下 在我们的编程语言的边界, 和它的打字保证.

* 联合国 事实上,我们只是发布指令 获取状态,而不是国家本身.

假设 app.ts 发表于 my-cdk-app 包,我们 cdk8s 应用程序现在看起来是这样:

import * as k8s from 'cdk8s';
import * as kplus from 'cdk8s-plus-27';

// import the desired instance from the AWS CDK app.
import { bucketName } from 'my-cdk-app';

import { AwsCdkResolver } from '@cdk8s/awscdk-resolver';

const k8sApp = new k8s.App({ resolvers: [new AwsCdkResolver()] });
const manifest = new k8s.Chart(k8sApp, 'Manifest');

new kplus.CronJob(manifest, 'CronJob', {
  schedule: k8s.Cron.daily(),
  containers: [{
    image: 'job',
    envVariables: {
      // directly passing the value of the `CfnOutput` containing 
      // the deploy time bucket name
      BUCKET_NAME: kplus.EnvValue.fromValue(bucketName.value),
    }
 }]
});

k8sApp.synth();

版本与发布记录

@cdk8s/awscdk-resolver 共发布 721 个版本,首次发布于 2023/10/03;过去 12 个月发布了 326 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.0.728latest2026/11/072 天前
0.0.7272026/11/063 天前
0.0.7262026/11/054 天前
0.0.7252026/10/319 天前
0.0.7242026/10/3010 天前
0.0.7232026/10/2911 天前

关于 @cdk8s/awscdk-resolver 的常见问题

@cdk8s/awscdk-resolver 是什么?

这个 AwsCdkResolver 能够解决任何 CfnOutput 由您的 AWS CDK 应用程序定义。 在这个例子中,我们创建一个S3 Bucket 使用 AWS CDK,并通过其(部署时间g)

如何安装 @cdk8s/awscdk-resolver?

在项目目录运行 npm install @cdk8s/awscdk-resolver,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:cdk8s(^2.68.91)、constructs(^10.3.0)、aws-cdk-lib(^2.195.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@cdk8s/awscdk-resolver 支持 TypeScript 吗?

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

@cdk8s/awscdk-resolver 支持 ESM 还是 CommonJS?

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

@cdk8s/awscdk-resolver 需要什么版本的 Node.js?

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

@cdk8s/awscdk-resolver 可以商用吗?

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

@cdk8s/awscdk-resolver 的下载量有多少?

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

@cdk8s/awscdk-resolver 还在维护吗?

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