[英]"Internal Server Error" when querying of DynamoDB in Lambda using Python
我目前正在尝试使用分区键“Name”读取我的 dynamodb 表“saved_measurements”。 我通过 API 网关 Lambda 代理集成来执行此操作,并且已经测试了我的event['pathParameters']['name']
工作正常,所以这不应该是问题。
但是,当我用我的“名称”查询我的 dynamodb 表时,出现错误。
{"message": "Internal server error"}
我参考了许多资源来查询 dynamodb,但似乎没有任何效果。 我还尝试在响应正文中打印一个示例字符串,例如“是”,并且没有任何问题。 只有当我尝试在响应正文中发送数据时,我才会再次遇到该问题。
我可以尝试解决这个问题吗?
import json
import boto3
from boto3.dynamodb.conditions import Key, Attr
def lambda_handler(event, context):
client = boto3.resource('dynamodb')
table = client.Table('saved_measurements')
data = table.query(KeyConditionExpression=Key('Name').eq(event['pathParameters']['name']))
stuff = data.Items
response = {
"statusCode": 200,
"headers": {
"Content-Type": 'application/json',
"Access-Control-Allow-Origin" : "*",
"Access-Control-Allow-Headers" : "Content-Type",
"Access-Control-Allow-Methods": "OPTIONS,POST,GET"
},
"body": json.dumps(stuff),
"isBase64Encoded": False
}
return response
您的代码需要一些优化,但我不确定它会解决问题。 分享一下我是怎么写的:
import json
import boto3
from boto3.dynamodb.conditions import Key, Attr
client = boto3.resource('dynamodb')
table = client.Table('saved_measurements')
def lambda_handler(event, context):
status_code=0
stuff = ""
try:
data = table.query(KeyConditionExpression=Key('Name').eq(event['pathParameters']['name']))
stuff = json.dumps(data['Items'])
status_code = 200
except Exception as e:
print(e)
stuff = e
status_code = 400
response = {
"statusCode": status_code,
"headers": {
"Content-Type": 'application/json',
"Access-Control-Allow-Origin" : "*",
"Access-Control-Allow-Headers" : "Content-Type",
"Access-Control-Allow-Methods": "OPTIONS,POST,GET"
},
"body": stuff,
"isBase64Encoded": False
}
return response
代码中的一些要点:
给这些更改一个 go,如果你不成功,请分享你的 APIGW 配置。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.