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 函数。
我正在构建 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 函数。