是否可以在步骤函数的映射状态内迭代DynamoDB表?

问题描述

基本上就是标题所说的。我已经阅读了文档:

https://docs.aws.amazon.com/step-functions/latest/dg/connect-ddb.html

这描述了如何从step函数从DynamoDB表中获取单个信息。我想做的是遍历整个表并开始为每个项目执行另一个状态机。每个新状态机将有一个单独的项目作为输入。我尝试了以下代码,很遗憾,这些代码不起作用:

{
  "StartAt": "OuterFunction","States": {
    "OuterFunction": {
      "Type": "Map","Iterator": {
        "StartAt": "InnerFunction","States": {
          "InnerFunction": {
            "Type": "Task","Resource": "arn:aws:states:::dynamodb:getItem.sync","Parameters": {
              "StateMachineArn":"other-state-machine-arn","TableName": "TestTable"
            },"End": true
          }
        }
      },"End": true
    }
  }
}

实际上是否可以通过这种方式遍历DynamoDB表?

解决方法

不,getItem 旨在获取特定的 DynamoDB 文档。您需要编写自定义 Lambda 来 .query().scan() 您的表,然后使用 Map 步骤迭代结果(当时很可能您不需要 getItem ,因为您可以通过查询/扫描操作加载所有数据)。