是否应将规则详细信息传递给 Stepfunctions?
Should rule details be passed to Stepfunctions?
我想知道是否有可能,或者我正在尝试构建从一开始就不可能的东西。
当添加了事件模式的事件桥接规则(如下所示)触发阶跃函数时。
详细信息是否应该传递给步骤输入?
const rule = new Rule(this, 'Rule', {
schedule: Schedule.expression('cron(0 18 ? * SUN-WED *)'),
}
rule.addEventPattern({
detail: {
example: [
'hello-world',
],
},
});
rule.addTarget(new SfnStateMachine(stateMachine));
目前step input只显示,如果可以我可能会遗漏什么?
{
"version": "0",
"id": "590c8f79-8bb5-d50b-30f7-1234567890",
"detail-type": "Scheduled Event",
"source": "aws.events",
"account": "1234567890",
"time": "2022-01-14T19:33:47Z",
"region": "eu-west-1",
"resources": [
"arn:aws:events:eu-west-1:1234567890:rule/Example-Rule4C995B7F-UJ68BG8LJK54"
],
"detail": {}
}
更新;
感谢 Fedonev 设法让它按以下方式工作;
rule.addTarget(new SfnStateMachine(stateMachine, {
input: RuleTargetInput.fromObject({
'version': 'custom',
'id': EventField.fromPath('$.id'),
'detail-type': EventField.fromPath('$.detail-type'),
'source': EventField.fromPath('$.source'),
'account': EventField.fromPath('$.account'),
'time': EventField.fromPath('$.time'),
'region': EventField.fromPath('$.region'),
'resources': EventField.fromPath('$.resources'),
'detail': {
example: [
'hello-world',
],
},
}),
}));
rule.addEventPattern
方法过滤事件。相反,要将任意数据添加到计划的事件有效负载中,请使用目标的 input:RuleTargetInput
prop:
rule.addTarget(
new targets.SfnStateMachine(stateMachine, {
input: events.RuleTargetInput.fromObject({ example: ['hello-world'] }),
})
);
您的 Step Function 执行将仅接收您设置的输入,而不是 OP 中显示的默认事件负载:
// Step Function input
{
"example": [
"hello-world"
]
}
如果您还需要来自默认事件负载的字段,您可以将它们包含在您的输入中 by JSONPath reference with events.EventField。
我想知道是否有可能,或者我正在尝试构建从一开始就不可能的东西。
当添加了事件模式的事件桥接规则(如下所示)触发阶跃函数时。 详细信息是否应该传递给步骤输入?
const rule = new Rule(this, 'Rule', {
schedule: Schedule.expression('cron(0 18 ? * SUN-WED *)'),
}
rule.addEventPattern({
detail: {
example: [
'hello-world',
],
},
});
rule.addTarget(new SfnStateMachine(stateMachine));
目前step input只显示,如果可以我可能会遗漏什么?
{
"version": "0",
"id": "590c8f79-8bb5-d50b-30f7-1234567890",
"detail-type": "Scheduled Event",
"source": "aws.events",
"account": "1234567890",
"time": "2022-01-14T19:33:47Z",
"region": "eu-west-1",
"resources": [
"arn:aws:events:eu-west-1:1234567890:rule/Example-Rule4C995B7F-UJ68BG8LJK54"
],
"detail": {}
}
更新; 感谢 Fedonev 设法让它按以下方式工作;
rule.addTarget(new SfnStateMachine(stateMachine, {
input: RuleTargetInput.fromObject({
'version': 'custom',
'id': EventField.fromPath('$.id'),
'detail-type': EventField.fromPath('$.detail-type'),
'source': EventField.fromPath('$.source'),
'account': EventField.fromPath('$.account'),
'time': EventField.fromPath('$.time'),
'region': EventField.fromPath('$.region'),
'resources': EventField.fromPath('$.resources'),
'detail': {
example: [
'hello-world',
],
},
}),
}));
rule.addEventPattern
方法过滤事件。相反,要将任意数据添加到计划的事件有效负载中,请使用目标的 input:RuleTargetInput
prop:
rule.addTarget(
new targets.SfnStateMachine(stateMachine, {
input: events.RuleTargetInput.fromObject({ example: ['hello-world'] }),
})
);
您的 Step Function 执行将仅接收您设置的输入,而不是 OP 中显示的默认事件负载:
// Step Function input
{
"example": [
"hello-world"
]
}
如果您还需要来自默认事件负载的字段,您可以将它们包含在您的输入中 by JSONPath reference with events.EventField。