Cha*_*nis 7 amazon-web-services amazon-dynamodb aws-step-functions
我有一个 AWS Step 函数,我需要将项目插入 DynamoDB。我将以下输入传递给 Step Function 执行:
{
"uuid": "dd10a857-3711-451e-91ee-d0b3ab621b2e",
"item_id": "0D98C2F77",
"item_count": 3,
"order_id": "IO-98255AX"
}
Run Code Online (Sandbox Code Playgroud)
我有一个 DynamoDB PutItem Step,设置如下:
由于item_count
是一个数值,我指定"N.$": "$.item_count"
- 我N
在开头指定,因为它映射到 DynamoDB 中的数字类型。由于所有其他字段都是字符串,因此我以 开始它们的键S
。
然后,我尝试使用上述有效负载测试 PutItem 步骤,但出现以下错误:
{
"error": "States.Runtime",
"cause": "An error occurred while executing the state 'DynamoDB PutItem' (entered at the event id #2). The Parameters '{\"TableName\":\"test_item_table\",\"Item\":{\"uuid\":{\"S\":\"dd10a857-3711-451e-91ee-d0b3ab621b2e\"},\"item_id\":{\"S\":\"0D98C2F77\"},\"item_count\":{\"N\":3},\"order_id\":{\"S\":\"IO-98255AX\"}}}' could not be used to start the Task: [The value for the field 'N' must be a STRING]"
}
Run Code Online (Sandbox Code Playgroud)
我查了一下The value for the field 'N' must be a STRING
错误,发现了两个相关结果:
numberFromString()
CDK 中提供的功能就我而言,我有一个整数值,并且我更愿意将其作为整数传递到 Dynamo - 但根据第一个链接,Step Functions 似乎只能将字符串值传递到 DynamoDB。这意味着我唯一的选择是将整数值转换为字符串,但我不确定如何执行此操作。我知道 Step Functions 具有内在函数,但我认为这不适用于JSON 路径。
将此数值数据存储到 DynamoDB 的最佳方法是什么?
长话短说 "item_count": {"N.$": "States.JsonToString($.item_count)"}
Step Functions 似乎只能将字符串值传递给 DynamoDB
是的,尽管从技术上来说这是DynamoDB API的限制。DynamoDB 接受数字作为字符串以最大限度地提高兼容性,但基础数据类型仍然是数字。
这意味着我唯一的选择是将整数值转换为字符串,但我不确定如何执行此操作。
内部函数JsonToString
可以将状态机执行输入中的数字值字符串化。
归档时间: |
|
查看次数: |
3495 次 |
最近记录: |