Получение сообщения: “Внутренняя ошибка сервера” при вызове AWS Lambda через API Gateway. Функция работает, но ответом является эта ошибка

#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:

Вот общие проблемы, которые могут помочь вам диагностировать проблему.

  1. У него нет правильного разрешения, позволяющего API Gateway вызывать вашу лямбда-функцию.
  2. Он установлен в качестве прокси-сервера службы AWS для вашей лямбда-функции, ответ от вашей лямбда-функции не возвращает ответ в правильном формате.

Я рекомендую вам включить функцию ведения журнала на стороне API Gateway или вы можете использовать функцию test invoke на консоли API Gateway, используя этот документ .

Комментарии:

1. Последнее имело место. Возврат из lambda не был правильным JSON. исправление заставило ее работать. Мы смогли подтвердить это из предложенного вами журнала. Спасибо!