Open2
DynamoDB ClientError: ValidationException - Invalid ConditionExpression: Attribute name is a reserve
問題の原因
DynamoDBのConditionExpressionでurlを使用した際に以下のエラーが発生した。
DynamoDB ClientError: ValidationException - Invalid ConditionExpression:
Attribute name is a reserved keyword; reserved keyword: url
エラーの詳細
DynamoDBではurlが予約キーワードのため、ConditionExpressionで直接使用できません。
該当するLambda(Python)のコードはこちら。
table.put_item(Item=item, ConditionExpression="attribute_not_exists(url)")
解決方法
ExpressionAttributeNamesを使用して予約語を回避する
DynamoDB予約語公式リスト:
Expression Attribute Names(解決方法):# エラーが発生するコード
table.put_item(Item=item, ConditionExpression="attribute_not_exists(url)")
# 修正版
table.put_item(
Item=item,
ConditionExpression="attribute_not_exists(#url)",
ExpressionAttributeNames={
"#url": "url"
}
)