如何循环json输入 - aws step function / state machine

时间:2017-11-09 12:59:10

标签: json amazon-web-services aws-step-functions

是否可以在aws步骤函数中创建一个循环并循环通过json输入数组?

我有一个函数generateEmails,它创建的数组包含n个对象:

{
  "emails": [
    {
      "to": [
        "willow1@aaa.co.uk"
      ]
    },
    {
      "to": [
        "willow2@aaa.co.uk"
      ]
    },    {
      "to": [
        "willow3@aaa.co.uk"
      ]
    }
  ]
}

现在我想为电子邮件数组中的每个对象调用下一个函数sendEmail,如下所示:

{
  "email": {
    "to": [
      "willow@aaa.co.uk"
    ]
  }
}

enter image description here

步骤功能代码:

{
  "Comment": "A state machine that prepares and sends confirmation email ",
  "StartAt": "generateEmails",
  "States": {
    "generateEmails": {
      "Type": "Task",
      "Resource": "arn:aws:lambda::prepare-confirmation-email",
      "Next": "sendEmail"
    },
    "sendEmail": {
      "Type": "Task",
      "Resource": "arn:aws:lambda::function:template-service",
      "End" : true
    }
  }
}

这有可能实现吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

昨天官方AWS文档已经使用几乎相同的示例进行了更新,正如Ward已经建议的那样。您需要修改此示例并在每次迭代结束时从原始数组(您generateEmails lambda函数的输出)中删除已处理的数据项。

您可以在我的博文中找到简单的示例:AWS Step Functions. How to process arrays

与此同时,对并行数组处理感兴趣的每个人都可以在AWS论坛上提升map-reduce feature