Adobe 资产计算工人 SDK
Adobe 资产计算服务的所有定制工作人员都需要这个图书馆。 它提供了一个易于使用的框架,并处理诸如资产和引渡访问、验证和类型检查、事件通知、错误处理等常见问题.
安装
npm install @adobe/asset-compute-sdk
概览
这些是Adobe资产计算员SDK完成的高级别步骤:
- 设置
- 启动计量代理和 Adobe IO 事件处理器(参见 资产计算公用 更多信息)
- 为本地访问源码和引渡设置适当的目录
- 下载源文件
url内source对象 - 运行
renditionCallback用于每个引渡的函数(劳动者)或立即引渡(批发工人(中文(简体) )- 递解回话就是把工人逻辑放在那里 此函数至少需要将本地源文件转换为本地引渡文件
- 每次引渡后通过Adobe IO事件通知客户
- 它发出一个
rendition_created或者说rendition_failed视结果而定的事件(见 资产计算 API 同步事件 更多信息) - 如果工人是链条工人的一部分,它只会在链条上最后一个工人之后发出成功的引渡事件
- 它发出一个
实例
简洁的日记工
要求每次引渡都履行引渡职能.
const { worker } = require('@adobe/asset-compute-sdk');
async function renditionCallback(source, rendition, params) => {
// ... worker logic
}
const main = worker(renditionCallback, options);
await main(params);
批次加工Javascript工人
要求引渡与所有引渡一起运作.
const { batchWorker } = require('@adobe/asset-compute-sdk');
async function batchRenditionCallback(source, rendition, outdir, params) => {
// ... worker logic
}
const main = batchWorker(batchRenditionCallback, options);
await main(params);
果壳脚本工人
使用用外壳书写的工人进行引渡.
const { shellScriptWorker } = require('../lib/api');
const main = shellScriptWorker(); // assumes script is in `worker.sh`
await main(params);
带有自定义脚本名的 shellscript工人
const { shellScriptWorker } = require('../lib/api');
const main = shellScriptWorker('custom-worker-name.sh'); // assumes script is in `custom-worker-name.sh`
await main(params);
关于大变量的说明
如果一个变量在大小上超过128kb(对于一些XMP元数据可能发生),它不能作为环境变量传递到 shell脚本. 相反,该变量被写入以下文件: ./vars 而文件的路径存储在环境变量中。 一个额外的环境变量FILE PARAMS包含了所有需要这种替换的变量列表(如果有的话). 一个容易检查一个变量是否存储在文件中的方法是使用图案匹配来检查,例如:
# Example of passing the variable as STDIN to a command regardless of if it a file or environment variable
if [[ "$rendition_myvariable" == "./vars/"* ]]
then
# Value was stored in a file, do something with the file contents
cat "$rendition_myvariable" >> somecommand
else
# The value is in the environment variable $rendition_myvariable
echo "$rendition_myvariable" >> somecommand
API 细节
这个 worker 财务报告和审定财务报表 batchWorker 需要两个参数: renditionCallback 财务报告和审定财务报表 options 如下文所述.
收回租金 worker (必须)
这个 renditionCallback 函数是设置自定义工人代码的地方。 这个函数的基本期望是查看来自 rendition.instructions 并把它转化为引渡,然后将引渡书写给 rendition.path。 。 。 .
引渡的制作可能涉及外部图书馆或API。 这些步骤也应该在您内部完成 renditionCallback 函数.
参数
引渡召回功能的参数如下: source, (中文(简体) ), rendition,以及 params
source
包含以下属性的对象 :
| 名称 | 类型 | 说明 | 示例 |
|---|---|---|---|
url | string | URL指向源二进制 . | "http://example.com/image.jpg" |
path | string | 源文件本地副本的绝对路径 | "/tmp/image.jpg" |
name | string | 档案名. 如果无法检测到 MIME 类型, 可能会使用名称中的文件扩展名 。 在 URL 路径中优先使用文件名, 在二进制资源的内容分散标题中优先使用文件名 。 默认为"文件". | "image.jpg" |
headers | object | 在对 HTTP( S) 请求时包含额外信头的对象 url | headers: { 'Authorization': 'auth-headers' } |
##### rendition | |||
| 包含以下属性的对象 : |
| 名称 | 类型 | 说明 |
|---|---|---|
instructions | object | 从工人参数(如质量、dpi、格式、高等)中移出参数。 见完整列表 这里 |
directory | string | 放置引渡目录 |
name | string | 要创建的递解文件名 |
path | string | 本地存储引渡的绝对路径( 必须将引渡放在这里才能上传到云存储) |
index | number | 用于识别引渡的号码 |
params
原始参数传入工人(见完整 资产计算 API Doc(中文(简体) )
说明: 通常不需要这种论据,因为回调应将其信息取自 rendition.instructions 这些是请求中的具体引渡参数.
实例
起码 引渡回调功能必须写点东西给 rendition.path。 。 。 .
最简单的例子( 复制源文件 ) :
async function renditionCallback(source, rendition) => {
// Check for unsupported file
const stats = await fs.stat(source.path);
if (stats.size === 0) {
throw new SourceUnsupportedError('source file is unsupported');
}
// process infile and write to outfile
await fs.copyFile(source.path, rendition.path);
}
收回租金 batchWorker (必须)
这个 renditionCallback 函数在 batchWorker 这是你放的定制工人代码。 它的工作方式类似于 renditionCallback 函数在 worker 参数略有不同。 主要的区别在于每名工人只叫一次(而不是每次引渡).
这个功能的基本期望是,通过每个 renditions 并使用引渡 instructions 把它转换成引渡,然后写这个引渡到相应的 rendition.path。 。 。 .
参数
引渡召回功能的参数如下: source, (中文(简体) ), renditions, (中文(简体) ), outdir,以及 params
source
来源与 renditionCallback 内 worker
renditions
渲染是一组 rendition 对象。 每个 rendition 对象的结构与 renditionCallback 内 worker
outdir
将批发人员引渡的目录
params
params 与 renditionCallback 内 worker
实例
起码 引渡回调功能必须写点东西给 rendition.path。 。 。 .
最简单的例子( 复制源文件 ) :
async function renditionCallback(source, renditions, outdir, params) => {
// Check for unsupported file
const stats = await fs.stat(source.path);
if (stats.size === 0) {
throw new SourceUnsupportedError('source file is unsupported');
}
// process infile and write to outfile
renditions.forEach(rendition, () => {
await fs.copyFile(source.path, outdir + rendition.path);
})
}
工人选项( 可选)
传递给工人的可选参数
-
disableSourceDownload:布尔用于禁用源下载(默认为虚假). -
disableRenditionUpload: 布尔用于禁用递解上传( 默认为假) .警告: 只有在不上传引渡时才使用此旗帜 。 这将使工人的活化失败,因为资产计算SDK期望的是引渡输出.
禁用源下载示例 :
const { worker } = require('@adobe/asset-compute-sdk');
async function renditionCallback(source, rendition, params) => {
// downloads source inside renditionCallback so does not need asset-compute-sdk to download source file
await fetch(source.url);
}
const options = {
disableSourceDownload: true
};
const main = worker(renditionCallback, options);
await main(params);
禁用移植上传示例 :
const { worker } = require('@adobe/asset-compute-sdk');
const options = {
disableRenditionUpload: true
};
const main = worker(renditionCallback, options);
await main(params);
代表失败事件实例( 外部管弦乐手拥有重试) :
注意: Adobe 资产计算服务的自定义员工无法使用此特性; 选项被忽略。 。 。 .
const { worker } = require('@adobe/asset-compute-sdk');
const options = {
// no `rendition_failed` events are sent; the result contains `renditionOutcomes` instead
delegateFailureEvents: true,
// optional, awaited (max 10 seconds) before the process exits on an action timeout
// `err.renditionOutcomes` lists the status of every rendition, e.g. [{ index: 0, status: "success" },
// { index: 1, status: "failed", errorType: "GenericError", message: "..." }]
onBeforeTimeout: async (err) => { /* e.g. report err.renditionOutcomes to the orchestrator */ }
};
const main = worker(renditionCallback, options);
await main(params);
与 delegateFailureEvents数字 :
- 结果( 或抛出的错误) 包含
renditionOutcomes财务报告和审定财务报表invocationFailed。 。 。 .invocationFailed实值true当整个引用失败时。 每次请求的引渡都会产生结果,即使在引渡处理开始前(例如下载/准备期间)发生故障也是如此. - 在行动暂停时,未确认成功事件的引渡被报告为失败而等待成功公布。 迟到的成功事件可能仍会到来;这种交付模糊不清和可能的重试被接受. 重试计数由管弦乐手控制,而不是这个包.
- 超时计量标准与
onBeforeTimeout10秒后封顶 失败或挂起的度量衡调用无法阻止钩子运行或进程退出. - 输油管引渡没有有效的失败授权支持:
worker(), (中文(简体) ),batchWorker()财务报告和审定财务报表shellScriptWorker()在开始输油管前拒绝这个组合 没有代表团的管道电话没有改变;习惯工人仍然无视代表团的选择. - 超时处理使用共享的定稿承诺和最终结果。 正常完成等待暂停报告,包括在清理期间开始暂停。 超时处理器随后终止活化.
onBeforeTimeout得到一个快照,即延迟结果无法改变. - 在授权模式下,拒绝错误遥测不能取代原来的处理失败或去除其递解结果.
- 来电供应
onBeforeTimeout; 此包本身不通知 Temperal 。 何时@nui/node-temporal-sdk接通了钩子,它必须与正常的完成路径协调报告所有权,以避免第二次通知.
员额处理
注意: Adobe 资产计算服务的自定义员工无法使用此特性。 。 。 .
图像邮递处理自版本以来已可用 2.4.0 并且必须由工人通过设定
rendition.postProcess = true;
在处理回调中.
对于 shell 脚本工作人员,他们可以创建 JSON 文件,其路径由env var 给脚本 optionsfile 并将此包含在文件中 :
{
"postProcess": true
}
后处理功能
这些指示得到支持:
fmt有png、jpg/jpeg、tif/tiff和gifwidth财务报告和审定财务报表heightqualityjpeg 和 giinterlace对 pngjpegSize用于jpegdpiconvertToDpicrop
捐款准则
资产计算服务有存储器模块化和命名准则. 它尽可能模块化,由无服务器概念和OpenWhisk框架所促进. 这意味着拥有小型和重点突出的GitHub储存库,以支持脱钩的开发和部署生命周期。 一个行动的存放处如果它代表了自己的小服务,如工人,就没问题。 如果您想要创建一个单独的寄存器, 请登录一个问题 资产计算 SDK 存储器。 。 。 .
详细准则见 捐款准则同时,遵循这些 Git 输入消息指南。 。 。 .
现有资源和图书馆
资产计算处的开源图书馆有:
- 资产计算 SDK:工人SDK和第三方定制工人的主要框架.
- 资产计算: 所有资产计算无服务器行动所需的通用公用事业.
- 资产计算客户端: Adobe 资产计算服务的JavaScript客户端.
- 资产计算实例工作者:第三方资产计算工人样本.
- ESlint 配置:与Adobe资产计算服务相关的Nodejs项目共享ESLint配置.
- 资产计算开发工具:用于开发者工具的库来探索并测试Adobe资产计算服务.
- aio-cli-插件-资产计算: Adobe I/O命令行接口的资产计算插件.
- Adobe 资产计算集成测试:资产计算开发者经验的集成测试.
许可证发放
这个项目根据Apache V2许可证获得许可. 见 自由主义 更多信息.