这是我关于Stack Overflow的第一篇文章,所以希望我说得足够具体。我正试图将Lambda函数(在Python中编码)与DynamoDB和API网关集成。我希望API从DynamoDB返回一个项目,但是当我导航到API端点时,我得到了一个Internal server error
消息。我看过CloudWatch日志,他们说这是由malformed Lambda proxy response
引起的。
经过进一步调查,我相当确定这与使用json.dumps
格式化LambdaresponseBody
有关。但是在尝试了几十种不同的组合后,我不知道正确的语法(我没有任何Python经验)。
这是我的Lambda函数:
def lambda_handler(event, context):
ddbResponse = table.update_item(
Key={
"id": "user1"
},
UpdateExpression='ADD clicks :inc',
ExpressionAttributeValues={
':inc': 1
},
ReturnValues="UPDATED_NEW"
)
responseBody = json.dumps(XXXXXXXXXX)
apiResponse = {
"isBase64Encoded": False,
"statusCode": 200,
"body": responseBody
}
return apiResponse
如果我只是希望API响应是从DynamoDB表返回的clicks
的数量,我必须在json.dumps
括号之间的XXXX中放什么?提前感谢
ddbResponse['Attributes']['clicks'])
会给你点击。我们可以返回
return {
'statusCode': 200,
'body': json.dumps({'clicks': int(ddbResponse['Attributes']['clicks'])})
}
只返回点击
{
'statusCode': 200,
'body': int(response['Attributes']['clicks'])
}