AWS Step Function 使用 DynamoDB 中的单个主键获取所有范围键

AWS Step Function get all Range keys with a single primary key in DynamoDB

我正在构建 AWS Step Function 状态机。我的目标是从 DynamoDB table 中读取所有项目,这些项目具有哈希键(用户名)和任何(通配符)排序键的特定值 (order_id)。 基本上可以从 SQL 完成的事情:

SELECT username,order_id FROM UserOrdersTable
WHERE username = 'daffyduck'

我正在使用 Step Functions 从 DynamoDB table 获取 AWS Glue 作业的配置,然后通过 step 函数的 Map 为每个 dynamodb 项目(使用从数据库读取的参数)生成 Glue 作业。

 "Read Items from DynamoDB": {
  "Type": "Task",
  "Resource": "arn:aws:states:::dynamodb:getItem",
  "Parameters": {
    "TableName": "UserOrdersTable",
    "Key": {
      "username": {
        "S": "daffyduck"
      },
      "order_id": {
        "S": "*"
      }
    }
  },
  "ResultPath": "$",
  "Next": "Invoke Glue jobs"
}

但我无法让状态机在上面的步骤函数任务中为用户 daffyduck 读取所有 order_id。除了 http stats 之外,使用上面的代码没有显示任何输出。 order_id 有通配符吗?还有另一种获取所有 order_id 的方法吗?查询自定义似乎在步骤函数内部相当有限: https://docs.amazonaws.cn/amazondynamodb/latest/APIReference/API_GetItem.html#API_GetItem_RequestSyntax

基本上我正在尝试完成可以从命令行完成的操作,如下所示:

$ aws dynamodb query \
--table-name UserOrdersTable \
--key-condition-expression "Username = :username" \
--expression-attribute-values '{
    ":username": { "S": "daffyduck" }
}'

有什么想法吗?谢谢

我认为 Step functions Dynamodb Service 尚不能实现这一点。 目前支持获取、放置、删除和更新项目,不支持查询或扫描。 对于 GetItem 我们需要传递整个 KEY(分区 + 范围键)

For the primary key, you must provide all of the attributes. For example, with a simple primary key, you only need to provide a value for the partition key. For a composite primary key, you must provide values for both the partition key and the sort key.

我们需要编写一个 Lambda 函数来查询 Dynamo 和 return 一个映射并从步骤中调用 lambda 函数。