首页 > 解决方案 > 是否可以在步进函数的映射状态中遍历 DynamoDB 表?

问题描述

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

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

这描述了如何通过步进函数从 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 表?

标签: amazon-web-servicesamazon-dynamodbaws-step-functions

解决方案


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


推荐阅读