You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在AWS Step Functions中实现DynamoDB GetItem动态键输入?

在AWS Step Functions中动态指定DynamoDB GetItem的主键名称

解决转义问题的正确写法

你的思路方向是对的,但之前的转义方式有误,主要需要修正两个关键点:一是States.Format中要输出字面量大括号{},必须写成{{}}进行转义;二是JSON字符串中的双引号需要用\转义。调整后的合法写法如下:

{
  "TableName.$": "$.TableName",
  "Key.$": "States.StringToJson(States.Format('{{\"{}\": {{\"S.$\": \"{}\"}}}}', $.PrimaryKeyName, $.PrimaryKeyValue))"
}

这个表达式会先通过States.Format生成包含动态主键名和值的JSON字符串,再用States.StringToJson将其转换为合法的JSON对象,Step Functions就能正确解析执行。

替代方案:拆分步骤简化逻辑

如果觉得单步表达式过于繁琐,可以拆分为两个步骤来实现:

  1. Pass状态构造Key字符串:先生成带动态主键信息的字符串,暂存到临时字段
{
  "Type": "Pass",
  "Parameters": {
    "KeyStr.$": "States.Format('{{\"{}\": {{\"S.$\": \"{}\"}}}}', $.PrimaryKeyName, $.PrimaryKeyValue)",
    "TableName.$": "$.TableName"
  },
  "ResultPath": "$.temp",
  "Next": "GetItemFromDynamoDB"
}
  1. DynamoDB:GetItem状态:直接引用转换后的Key对象执行查询
{
  "Type": "Task",
  "Resource": "arn:aws:states:::dynamodb:get-item",
  "Parameters": {
    "TableName.$": "$.temp.TableName",
    "Key.$": "States.StringToJson($.temp.KeyStr)"
  },
  "End": true
}

内容的提问来源于stack exchange,提问作者Tofig Hasanov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 11:25:33