SuperAPI AI 工具集

pulumi-component

设计与创作

查看项目

更新于 10-16 09:53

技能介绍

用途:该技能用于指导编写 Pulumi 的 ComponentResource 组件类,把相关基础设施资源封装为可复用、易维护的逻辑单元。组件在 pulumi preview/up 输出和 Pulumi Cloud 控制台中显示为单个节点,子资源嵌套其下。

主要能力与要点:

  1. 组件结构:继承 ComponentResource,super() 传入类型 URN(格式 <package>:<module>:<type>,如 myorg:index:StaticSite);接受 name、args、ComponentResourceOptions;所有子资源设置 parent: this;构造函数末尾必须调用 registerOutputs(),否则组件会卡在 creating 状态且输出不写入状态。
  2. 子资源命名:从组件名派生(如 ${name}-bucket),避免硬编码导致多次实例化冲突。
  3. args 接口设计:属性用 pulumi.Input<T> 包装以接受普通值或 Output;保持扁平结构;避免联合类型(Python、Go、C# 无法表示);避免函数或回调(无法跨语言序列化);可选属性在构造函数内设默认值。
  4. 输出暴露:只暴露消费者需要的值,不暴露全部内部资源;可用 pulumi.interpolate 或 pulumi.concat 构造组合输出。
  5. 设计模式:带覆盖的合理默认值、按可选参数条件创建子资源、由低层组件组合高层组件。
  6. 多语言:设计需兼容 TypeScript、Python、Go、C# 等 SDK 生成。

使用方式:在创建新组件类、设计 args 接口、使组件可被多语言消费、发布组件包、将内联资源重构为组件或调试组件行为时调用本技能。通用 Pulumi 编码模式(Output 处理、密钥、别名、预览流程)应改用 pulumi-best-practices 技能。

限制:资料未提供具体安装命令、收费信息或平台支持细节;示例代码为 TypeScript 与 Python,其他语言细节暂未提供。