通过 API 网关调用 AWS Lambda 时收到消息:“内部服务器错误”。该功能正在运行,但响应是此错误
Getting message: “Internal server error” while invoking AWS Lambda via API Gateway. The function is working but the response is this error
我正在访问以下在 lambda 中创建的函数:
import json
import boto3
from get_json_s3 import get_json
def lambda_handler(event, context):
print(event)
jobId = event['queryStringParameters']['jobID']
try:
print(jobId)
response = get_json(None,f'{jobId}.json')
print(response)
except:
return {
'statusCode': 200,
'body': json.dumps('jobID not found')
}
print("success")
return {
'statusCode': 200,
'body': json.dumps(response)
}
get_json定义如下:
import json
import boto3
s3 = boto3.client('s3')
def get_json(filegroup, filename):
bucket = 'bucket name'
if filegroup!=None:
key = f'{filegroup}/{filename}'
else:
key = f'{filename}'
response = s3.get_object(Bucket = bucket, Key = key)
content = response['Body']
jsonObject = json.loads(content.read())
return jsonObject
我创建了一个 API 网关,使用 lambda 作为代理。我已经添加了对 lambda 函数的调用访问和 apigateway 访问,但我一直收到 502:内部服务器错误。
正如我从 Cloud watch 日志中看到的那样,lambda 正在执行它应该正确执行的功能。它也通过 API 网关正确触发。只有响应部分不起作用
以下是可能会帮助您诊断问题的常见问题。
- 它没有允许 API 网关调用您的 Lambda 函数的权限。
- 它被设置为您的 Lambda 函数的 AWS 服务代理,您的 Lambda 函数的响应没有return正确格式的响应。
我建议您在 API 网关端启用日志记录功能,或者您可以使用此 doc.
在 API 网关控制台上使用测试调用功能
我正在访问以下在 lambda 中创建的函数:
import json
import boto3
from get_json_s3 import get_json
def lambda_handler(event, context):
print(event)
jobId = event['queryStringParameters']['jobID']
try:
print(jobId)
response = get_json(None,f'{jobId}.json')
print(response)
except:
return {
'statusCode': 200,
'body': json.dumps('jobID not found')
}
print("success")
return {
'statusCode': 200,
'body': json.dumps(response)
}
get_json定义如下:
import json
import boto3
s3 = boto3.client('s3')
def get_json(filegroup, filename):
bucket = 'bucket name'
if filegroup!=None:
key = f'{filegroup}/{filename}'
else:
key = f'{filename}'
response = s3.get_object(Bucket = bucket, Key = key)
content = response['Body']
jsonObject = json.loads(content.read())
return jsonObject
我创建了一个 API 网关,使用 lambda 作为代理。我已经添加了对 lambda 函数的调用访问和 apigateway 访问,但我一直收到 502:内部服务器错误。
正如我从 Cloud watch 日志中看到的那样,lambda 正在执行它应该正确执行的功能。它也通过 API 网关正确触发。只有响应部分不起作用
以下是可能会帮助您诊断问题的常见问题。
- 它没有允许 API 网关调用您的 Lambda 函数的权限。
- 它被设置为您的 Lambda 函数的 AWS 服务代理,您的 Lambda 函数的响应没有return正确格式的响应。
我建议您在 API 网关端启用日志记录功能,或者您可以使用此 doc.
在 API 网关控制台上使用测试调用功能