拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 是否应将规则详细信息传递给Stepfunctions?

是否应将规则详细信息传递给Stepfunctions?

白鹭 - 2022-02-12 2103 0 0

我想知道是否有可能,或者我正在尝试构建从一开始就不可能的东西。

当添加了事件模式的事件桥规则(如下所示)触发步进函式时。是否应该将详细信息传递到步骤输入?

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));

目前,步骤输入仅显示,如果可能的话,我可能会丢失什么?

{
  "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',
      ],
    },
  }),
}));

uj5u.com热心网友回复:

rule.addEventPattern方法过滤事件。相反,要将任意资料添加到计划的事件负载中,请使用目标的input:RuleTargetInput道具:

rule.addTarget(
  new targets.SfnStateMachine(stateMachine, {
    input: events.RuleTargetInput.fromObject({ example: ['hello-world'] }),
  })
);

您的 Step Function 执行将仅接收您设定的输入,而不是 OP 中显示的默认事件负载:

// Step Function input
{
  "example": [
    "hello-world"
  ]
}

如果您还需要默认事件负载中的栏位,您可以通过 JSONPath 参考将它们包含在您的输入中,并使用 events.EventField

标签:

0 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *