AWS ruby​​ sdk v2 - dynamodb查询

ben*_*din 3 ruby amazon-web-services amazon-dynamodb

我在DynamoDB中有一个哈希(字符串)和范围(数字)表.我正在尝试使用ruby SDK v2.0.30运行查询,但不断收到以下错误:

aws-sdk-core-2.0.30/lib/seahorse/client/plugins/raise_response_errors.rb:15:in `call': One or more parameter values were invalid: Condition parameter type does not match schema type (Aws::DynamoDB::Errors::ValidationException)

这是我的代码:

gem 'aws-sdk', '~> 2'
require 'aws-sdk'

dynamodb = Aws::DynamoDB::Client.new(region: 'eu-west-1', credentials: creds)
resp = dynamodb.query(
      table_name: "TEST_TABLE",
      key_conditions: {
        'ID' => {
          comparison_operator: 'EQ',
          attribute_value_list: [{ 's' => 'test123' }]
        }
      })
Run Code Online (Sandbox Code Playgroud)

我是ruby的新手并尝试在线查看AWS文档,但找不到任何东西.任何帮助,将不胜感激.

谢谢

Tre*_*owe 9

您的错误在于如何格式化查询表达式中哈希键的值.适用于Ruby的v2 AWS SDK(aws-sdkgem)接受所有属性值作为vanilla Ruby值.

一个可以是:

  • 数字(整数,浮点数,BigDecimal等)
  • 布尔
  • IO(blob类型)
  • 设置(数字/字符串)
  • 数组()
  • 哈希(String => value)

您无需提供v1 AWS SDK for Ruby所需的类型提示.

ddb = Aws::DynamoDB::Client.new
ddb.query({
  table_name: 'TEST_TABLE',
  key_conditions: {
    'ID' => {
      comparison_operattor: 'EQ',
      attribute_value_list: ['test-123']      
    }
  }
})
Run Code Online (Sandbox Code Playgroud)

此外,与您的问题没有直接关系,但您可能会发现以下博客系列在使用aws-sdkgem中的DynamoDB时非常有用: