0

有没有一种方法可以将日期或 cron 计划作为输入传递给我的状态函数——它被云监视事件调用?云监视事件按 cron 计划运行,我想每天将其动态传递给 step 函数

例如:

这提供了一些静态输入,但我想将每天的日期作为输入

resource "aws_cloudwatch_event_target" "target" {

rule = aws_cloudwatch_event_rule.samplerule.id
arn = aws_sfn_state_machine.samplemachine.id
role_arn = aws_iam_role.iam_for_sfn.arn
input = <<EOF
{
  "operand1": "3",
  "operand2": "5",
  "operator": "add"
}
EOF
}
4

2 回答 2

0

另一种解决方案可能是使用对上下文对象的全局访问,如此处所述,获取步进函数状态机的执行开始时间。

因此,您可以通过状态机的不同状态发送它,如下所示:

"mystep1": {
  "Type": "task",
  "Parameters": {
    "StartTime.$": "$$.Execution.StartTime"
 }
}

确保使用双$精度来告诉 Cloudformation 您正在使用对上下文对象的全局访问。

于 2021-03-30T01:50:59.297 回答
0

来自计划事件的 Lambda 函数的输入如下所示:

{
 "id": "53dc4d37-cffa-4f76-80c9-8b7d4a4d2eaa",
 "detail-type": "Scheduled Event",
 "source": "aws.events",
 "account": "123456789012",
 "time": "2019-10-08T16:53:06Z",
 "region": "us-east-1",
 "resources": [ "arn:aws:events:us-east-1:123456789012:rule/MyScheduledRule" ],
 "detail": {}
}

使用您选择的编程语言,您可以提取时间值并将其从字符串转换为日期资源/对象(取决于您的语言)。从那时起,您可以获得您正在寻找的数据组件。

重要提示:所有已安排的活动都使用 UTC 时区,安排的最小精度为 1 分钟:https ://docs.aws.amazon.com/AmazonCloudWatch/latest/events/ScheduledEvents.html

于 2021-03-27T19:09:39.727 回答