環境
- OS: macOS Big Sur 11.5.2
- ruby: 2.7.1
問題
# clientオブジェクトを用意
client = Aws::DynamoDB::Client.new(
access_key_id: ENV['AWS_ACCESS_KEY_ID'],
secret_access_key: ENV['AWS_SECRET_ACCESS_KEY'],
region: ENV['AWS_REGION']
)
# 特定のカラムの値を更新
client.update_item({
table_name: "test_table",
key: {Id: 1},
update_expression: "SET #{column} = :val",
expression_attribute_values: {':val' => value }
})
上記を実行すると、以下のエラーが発生
Aws::DynamoDB::Errors::ValidationException
The provided key element does not match the schema
原因
プライマリーキー名のタイポだった
【正】 id
【誤】 Id
client.update_item({
table_name: "test_table",
key: {id: 1}, # Id => id
update_expression: "SET #{"foo"} = :val",
expression_attribute_values: {':val' => "bar" }
})