用途:Resources 在 Windmill 中存储外部服务的凭据与配置,供脚本、流程或触发器在运行时使用。
文件格式:资源文件遵循 {path}.resource.json,例如 f/databases/postgres_prod.resource.json。结构含 value(配置对象)、resource_type(资源类型名,如 postgresql、slack),description 可选。
引用与密钥:值中可引用变量,格式为 $var:g/all/name(全局)、$var:u/username/name(用户)、$var:f/folder/name(目录)。密码、API Key、Token 等密钥不得内联写入,应存为密钥变量并以 $var:<path> 引用;引用在运行时解析,不得臆造值。资源引用其他资源用 $res:<path>。引用变量的资源要求该变量先存在,须先创建或部署变量。密钥明文不应写入仓库文件,应让用户在工作区创建,例如 wmill variable add '<value>' <path>(默认即密钥),再按路径引用。
作为运行参数:类型为 resource-<type> 的参数以裸字符串 $res:<path> 整体传入,变量同理用 $var:<path>,适用于 wmill script run/preview、wmill flow run/preview、runScriptByPath / runFlowByPath API、schedule args、trigger 静态 args。切勿包成对象,解析器只识别以 $res: / $var: 开头的字符串本身,键不会被检查。字符串可位于顶层参数、嵌套字段或数组元素中,数组仅遍历最多两层、最多 1000 项。
常见资源类型示例包括 postgresql、mysql、slack、s3、http、kafka、nats、mqtt 等,字段因类型而异。
自定义类型:Hub 已发布多数服务类型,实例同步后可用。无匹配时可自定义类型,名称以 c_ 前缀避免与后续同步的 Hub 类型冲突;脚本中引用完整名,如 TypeScript 的 RT.CCustomApi、Python 的 TypedDict。用 JSON Schema 定义并保存为 c_custom_api.resource-type.json。创建前应先征询用户。
OAuth:OAuth 资源通过 Windmill UI 管理,标记 is_oauth: true 与 account,Token 由 Windmill 自动刷新。
脚本中使用:TypeScript 参数类型为 RT.Postgresql,Python 用 TypedDict。
CLI:wmill resource list 列出资源;wmill resource-type list --schema 列出带 schema 的类型;wmill resource-type get postgresql 查看类型 schema;wmill sync push 部署(具破坏性,仅在用户明确要求部署/发布/推送时执行)。
限制:引用在任务运行时按运行身份解析,无法读取即失败;自定义类型字段被所有依赖它的资源与脚本共享,改动影响面大。暂未提供价格与配额信息。