#amazon-web-services #aws-lambda #aws-api-gateway
#amazon-web-services #aws-lambda #aws-api-gateway
Вопрос:
Я получаю доступ к следующей функции, созданной в 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 в качестве прокси. Я добавил доступ к вызову и доступ apigateway к функции lambda, но я продолжаю получать 502: внутренняя ошибка сервера.
Лямбда выполняет функцию, которую она должна выполнять правильно, как я вижу из журналов облачных наблюдений. Она также корректно запускается через APIGateway. Не работает только часть ответа
Комментарии:
1. Способ отладки — включить ведение журнала API Gateway, чтобы увидеть, какова фактическая ошибка. docs.aws.amazon.com/apigateway/latest/developerguide /…
2. Спасибо @MarkB , это помогло. Наш ответ был не в правильном формате.
Ответ №1:
Вот общие проблемы, которые могут помочь вам диагностировать проблему.
- У него нет правильного разрешения, позволяющего API Gateway вызывать вашу лямбда-функцию.
- Он установлен в качестве прокси-сервера службы AWS для вашей лямбда-функции, ответ от вашей лямбда-функции не возвращает ответ в правильном формате.
Я рекомендую вам включить функцию ведения журнала на стороне API Gateway или вы можете использовать функцию test invoke на консоли API Gateway, используя этот документ .
Комментарии:
1. Последнее имело место. Возврат из lambda не был правильным JSON. исправление заставило ее работать. Мы смогли подтвердить это из предложенного вами журнала. Спасибо!