【发布时间】:2022-08-02 14:20:21
【问题描述】:
我正在尝试从 lambda 函数更新 dynamoDB 表中的当前项目,并且收到没有信息的语法错误。当我跟随许多在线论坛和博客文章到达这个阶段时,我感到很困惑,而且代码似乎相同。我的 put_item sn-p 按预期工作,因此 dynamoDB 已正确连接到 lambda 函数。任何帮助将非常感激。
我的代码如下:
update = client.update_item(
TableName=\'sample\',
Key={\'id\': {\'S\': body[\"id\"]},
UpdateExpression=\"set cancelled = :g\",
ConditionExpression = \'attribute_exists(id)\',
ExpressionAttributeValues={
\':g\': \"yes\"
},
ReturnValues=\"UPDATED_NEW\"
)
我得到的日志如下:
{
\"errorMessage\": \"Syntax error in module \'lambda_function\': invalid syntax (lambda_function.py, line 89)\",
\"errorType\": \"Runtime.UserCodeSyntaxError\",
\"requestId\": \"86785a61-c526-4647-9a2c-b51466ddb8a6\",
\"stackTrace\": [
\" File \\\"/var/task/lambda_function.py\\\" Line 89\\n UpdateExpression=\\\"set canceled = :g\\\",\\n\"
]
}
解决此问题后,我收到以下错误
{
\"errorMessage\": \"Parameter validation failed:\\nInvalid type for parameter ExpressionAttributeValues.:g, value: yes, type: <class \'str\'>, valid types: <class \'dict\'>\",
\"errorType\": \"ParamValidationError\",
\"requestId\": \"b7710541-b398-4f2f-9f67-7eaafb1426bc\",
\"stackTrace\": [
\" File \\\"/var/task/lambda_function.py\\\", line 84, in lambda_handler\\n update = client.update_item(\\n\",
\" File \\\"/var/runtime/botocore/client.py\\\", line 391, in _api_call\\n return self._make_api_call(operation_name, kwargs)\\n\",
\" File \\\"/var/runtime/botocore/client.py\\\", line 691, in _make_api_call\\n request_dict = self._convert_to_request_dict(\\n\",
\" File \\\"/var/runtime/botocore/client.py\\\", line 739, in _convert_to_request_dict\\n request_dict = self._serializer.serialize_to_request(\\n\",
\" File \\\"/var/runtime/botocore/validate.py\\\", line 360, in serialize_to_request\\n raise ParamValidationError(report=report.generate_report())\\n\"
]
}
-
@ThierryLathuille 非常感谢你,不知道我是怎么错过的。不幸的是,这又弹出了一个错误,我已经更新了帖子
标签: python aws-lambda amazon-dynamodb