FilterExpressionに入れるべき内容がKeyConditionExpressionに入っていませんか?
こういう場合
const res = await docClient.query({
TableName: "SampleTable",
IndexName: "Value-Key-index",
KeyConditionExpression: "#v = :v and #f = :f",
ExpressionAttributeNames: {
"#v": "Value",
"#f": "f1",
},
ExpressionAttributeValues: {
":v": "hogehoge",
":f": "v1",
},
}).promise();
{
"errorType": "ValidationException",
"errorMessage": "Query condition missed key schema element: Key",
"trace": [
// ...
]
}
GSIのパーティションキーは入ってる, Indexも指定しているパターンで起こります. 思っているエラー文と全然違うので解決がうまいこといきにくいですね.
FilterExpressionに入れ直してあげましょう.
const res = await docClient.query({
TableName: "SampleTable",
IndexName: "Value-Key-index",
KeyConditionExpression: "#v = :v",
FilterExpression: "#f = :f", // <= ここ
ExpressionAttributeNames: {
"#v": "Value",
"#f": "f1",
},
ExpressionAttributeValues: {
":v": "hogehoge",
":f": "v1",
},
}).promise();