AWS步骤函数在DynamoDB中使用单个主键获取所有范围键



我正在构建AWS步进函数状态机。我的目标是从DynamoDB表中读取所有项目,这些项目具有Hash键(username)和任何(通配符)排序键(order_id)的特定值。基本上可以在SQL中使用:

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

我使用步骤函数从DynamoDB表中获取AWS Glue作业的配置,然后通过步骤函数的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统计之外,上面的代码不会显示任何输出。order_id是否有通配符?是否有其他方法获得所有order_ids?查询自定义似乎在步骤函数中相当有限: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" }
}'

任何想法?由于

我不认为这是可能的步进函数Dynamodb服务。目前支持get, put, delete &更新项目,而不是查询或扫描。对于GetItem,我们需要传递整个KEY (Partition + Range KEY)

对于主键,必须提供所有属性。为例如,对于一个简单的主键,您只需要提供一个值用于分区键。对于复合主键,必须提供分区键和排序键的值。

我们需要编写一个Lambda函数来查询Dynamo,返回一个映射,并从步骤调用Lambda函数。

最新更新