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

使用PowerShell执行Invoke-DDBQuery查询DynamoDB记录时语法错误求助

问题修复方案

错误原因

你的分区键名account_id:list包含冒号,直接在KeyConditionExpression中使用时,DynamoDB会将冒号后的list误判为表达式占位符的一部分,触发语法解析错误。

修复代码

修改查询参数,通过ExpressionAttributeNames转义带特殊字符的属性名:

$Query = @{
    TableName = "tableName"
    # 使用#ail作为属性名的占位符,替代原account_id:list
    KeyConditionExpression = "begins_with(#ail, :accountid) AND association_id = :aid"
    # 定义属性名映射,解决特殊字符解析问题
    ExpressionAttributeNames = @{
        '#ail' = 'account_id:list'
    }
    ExpressionAttributeValues = @{
        ':accountid' = 'TEST'
        ':aid' = "test-xxxxx-xxxxx-xxxxx"
    } | ConvertTo-DDBItem
}

$Data = @()
$Data = Invoke-DDBQuery @Query -IndexName "association_id" -Region "region" | ConvertFrom-DDBItem

额外注意事项

如果使用的association_id是全局二级索引(GSI),需确认索引结构:

  • 若GSI的分区键为association_id、排序键为account_id:list,当前查询逻辑合法,begins_with可作用于排序键实现前缀匹配。
  • 若GSI的分区键不是association_id,则需调整索引结构或查询条件,确保符合DynamoDB规则:查询必须包含分区键的精确匹配,排序键可使用比较操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 02:25:03