用途 本技能用于在 Adobe App Builder(OpenWhisk)仓库中实现或扩展 Workflow Builder 自定义动作(custom actions),依赖 @adobe/ffcpe-custom-node-core 与 @adobe/ffcpe-custom-node-app-builder。适用于 FFCPE 自定义 web 与 worker 动作的编写、挂载、构建、部署与目录注册。
主要能力与包结构 @adobe/ffcpe-custom-node-core 提供契约类型、handleFfcpeSubmit / handleFfcpeStatus、runWorkerJob、输入/输出辅助函数以及 IMS 入站鉴权辅助。 @adobe/ffcpe-custom-node-app-builder 提供 mountFfcpeNodeRoutes、createFfcpeNodeWorker、AIO JobStore、OpenWhisk 编排器、buildStatusUrl、createAioLogger。 需要声明 hono 为 peer 依赖(版本由应用自行选择)。常见 App Builder peer 还包括 @adobe/aio-lib-state、@adobe/aio-lib-ims、@adobe/aio-lib-core-logging 与 openwhisk,版本需与模板 package.json 对齐。
使用方式 Web 动作基于 Hono:导入 Hono、hono-openwhisk-adapter 的 ToOpenWhiskAction 以及 mountFfcpeNodeRoutes,通过 mountFfcpeNodeRoutes(app, { worker: { package, name }, web: { package, name } }) 挂载;web 与 worker 名称须与 manifest 中的 OpenWhisk 包与动作名一致。默认路由为 POST /submit 与 GET /status。web 动作在 *.config.yaml / ext.config.yaml 中需使用 web: "raw"、require-adobe-auth: false 及受支持的 Node 运行时(如 nodejs:22)。 Worker 动作实现 FfcpeNodeWorkerHandler:ctx 含 jobId、inputs、params、logger、可选 authContext、args;返回 { status: "completed", outputs? } 或 { status: "failed", error },输出可使用 createTextOutput、createImageOutput、createVideoOutput、createJsonOutput。图片输出需为 HTTPS URL,配合 @adobe/aio-lib-files 上传生成预签名 URL。manifest 中的 secrets 应通过 process.env 读取,不应记录日志。
从零初始化流程 若尚无 App Builder 项目,可用 aio app init --standalone-app(或 init-bare 脚本包装)。该生成器会产出与无头 FFCPE 动作无关的 web-src/、actions/generic/、actions/publish-events/、test/、e2e/。Console 项目名须为字母数字、不超过 20 字符,可与 runtimeManifest 包名不同。需依次创建并选择 Console 项目与 Stage 工作区、执行 aio app init、下载工作区凭据并导入(如已存在 .env,应使用 --overwrite --no-input 避免交互挂起)、下载的 JSON 含密钥须立即加入 .gitignore、清理脚手架目录、修正 app.config.yaml(移除 web: web-src 行并替换为 FFCPE web/worker 对)、整体替换 webpack-config.js(使用 esbuild-loader,需 libraryTarget: "commonjs2")并安装依赖。安装前建议用 npm view <package> version 确认最新版本,不要假定旧版本范围。
多动作与已有仓库 每个 FFCPE 节点需独立的 web + worker 对及同目录的 <action-name>.entry.json,可在同一 runtimeManifest 包下声明多对。已有仓库推荐同目录共置 web、worker 与 catalog entry JSON,共享同一 <action-name> 前缀。entry.json 是 catalog 注册负载(handlerType: "custom-action"、ports、customActionConfig、discovery 字段)。TypeScript + webpack 场景下部署产物需为 CommonJS,源码仍可用 ESM 风格 TypeScript。
部署与注册 执行 aio app build 与 aio app deploy 后,部署输出会列出 web 动作基础 URL;据此推导 submitEndpoint({base}/submit)与 statusEndpoint({base}/status)。注意路径为 /api/v1/web/ 而非 /apis/v1/,主机名中的 Runtime 命名空间为小写。安装并登录 CLI 插件(@adobe/aio-cli-plugin-ffcpe,需 aio login 与 aio console org select),然后使用 aio ffcpe catalog validate 与 aio ffcpe catalog register(已存在时用 update)完成校验与注册,不要使用原始 curl。当 web 动作使用默认路由鉴权时,authentication 应设为 ims_service_token 而非 none。
适用场景与限制 适用于 FFCPE 工作流自定义节点的开发、构建、部署与目录注册。HTTP 字段级契约细节需查阅 SDK 仓库 docs/custom-action-requests.md;消费者安装与示例见 README.md;包安装、本地链接与安全指引见 ffcpe-custom-node-sdk。目录条目 JSON 与 CLI 部分参见 ffcpe-catalog-entry-json 与 aio-ffcpe-cli。具体版本、收费与更多平台细节以官方资料为准,本文未提供的信息暂未明确。