@cumulus/cumulus-message-adapter-js (英语)
库穆卢斯是什么
Cumulus是一个以云为基础的数据摄取、存档、分发和管理 美国航天局未来地球科学数据流的原型.
读取 Cumulus 文档
Cumulus 消息适应器是什么?
Cumulus 信件适配器是一个库,用于在 使用 Cumulus 任务比较容易使用的格式 Cumulus 协议 任务,然后将其响应调整回 Cumulus 信件协议 将发送给下一个任务.
安装
Cumulus-message-adapter-js可以通过节点套件管理器(NPM)安装,套件定位 这里。 。 。 .
软件包可以通过运行添加到您的工程中 npm install @cumulus/cumulus-message-adapter-js --save。 。 。 .
任务定义
要使用 Cumulus 消息适应器, 您需要创建两个 模块中的方法:处理器函数和业务逻辑函数.
处理器功能是一个标准 Lambda 处理器功能,需要3个
参数(由AWS指定): event, (中文(简体) ), context,以及 callback。 。 。 .
业务逻辑函数是您任务的实际工作发生地 。 这个
应使用两个参数: nestedEvent 财务报告和审定财务报表 context。 。 。 .
这个 nestedEvent 对象包含两个密钥:
input- 任务的投入,通常是:payload电文, 运行时生产config- 任务配置,有模板变量 已解决
这个 context 参数是AWS通过的标准Lambda上下文.
业务逻辑函数的返回值将放在
payload 的 Cumulus 信息.
对输入、配置和返回值的期望均由任务确定, 并且应该有详细记录。 任务应认真考虑其投入 和返回值,因为断开变化可能对任务产生连锁效应 整个工作流程。 配置变化的影响略小,但 必须向使用该任务的人通报.
Cumulus 信件适应器接口
Cumulus 消息适配器用于 Javascript 提供了一种方法:
runCumulusTask它需要五个参数:
taskFunction- 包含您的业务逻辑的函数(如描述) 上文)cumulusMessage- Lambda通过的事件, 应该是一个Cumulus 消息context- Lambda的背景callback- 蓝巴达的回话schemas- JSON目标与任务计划的位置
这个 schemas JSON应该包含 input:, (中文(简体) ), output:,以及 config: 每个位置都有字符串。 如果不指定 schema 位置, 消息适配器将在 schemas 目录中查找 schemas , 在 root 关卡中查找文件: involution.json, 输出.json, 或 config.json 。 如果不指定或缺少计划,将不进行计划验证.
示例 Cumulus 任务
const cumulusMessageAdapter = require('@cumulus/cumulus-message-adapter-js');
function myBusinessLogic(nestedEvent, context) {
console.log('Hello, example!');
return { answer: 42 };
}
// The handler function should rarely, if ever, contain more than this line
function handler(event, context, callback) {
cumulusMessageAdapter.runCumulusTask(myBusinessLogic, event, context, callback, schemas);
}
exports.handler = handler;
创建部署软件包
使用此库的任务只是标准的AWS Lambda任务. 资料 创建可用的释放软件包 这里。 。 。 .
库穆卢斯部署的使用
关于如何在Cumulus部署中利用这一包的文件,请查看 工作流程调节。 。 。 .
环境变量
此库可使用两个环境变量:
CUMULUS_MESSAGE_ADAPTER_DISABLED=true- 默认为假. 此 var 禁用 Cumulus 信件适应器 。 这可以用来关闭消息适配器,用于独立修改消息的任务,或者用于测试.
CUMULUS_MESSAGE_ADAPTER_DIR- Cumulus消息适配器的默认目录是Lambda函数的根目录.
发展
运行测试
要运行此软件包的测试, 请运行 npm run lint && npm test
为什么用这种方法
这种办法有几个主要优点:
- 它明确防止任务对数据结构作出假设
喜欢
meta财务报告和审定财务报表cumulus_meta内部所有,因此可能 将在未来更新中中断。 为了进入这些机构的实地, 任务必须在工作流程配置中明确传递数据. - 它为各种数据结构提供了更明确的所有权。 拥有运算符
meta库穆卢斯拥有cumulus_meta。任务定义自己的config, (中文(简体) ),input,以及output格式. - Cumulus 消息适配器将运行的 Lambda 函数大大简化而非 明确为 Cumulus 创建.
- 这种方法大大简化了任务测试,因为任务不需要 设置繁琐的结构来模拟信件协议,并且可以 测试他们的业务功能.