Функция Amazon Lambda возвращает неправильный ответ - PullRequest
0 голосов
/ 10 января 2019

Я использую AWS S3, API Gateway и функцию Lambda для изменения размера моих изображений на лету. Я продолжаю иметь эту ошибку, когда изображение не существует:
Failed to load resource: the server responded with a status of 502 ()

Вместо этого он должен вернуть 404. Вот код в лямбда-функции:

S3.headObject({Bucket: BUCKET, Key: parameters.orignalImagePath}, function(err,data) {
        if(err) {   
            console.log("[404] Image Not Found:  " + parameters.orignalImagePath);       
            return callback(null, {
                statusCode: '404',
                body: '{ "message":"Image not found." }',
            })
        }
    }); 

Вот логи из CloudWatch:

    START         
    {"errorMessage":"The specified key does not exist.","errorType":"NoSuchKey"....}    
    [404] Image Not Found: Folder/image.png   
    END  

Почему я получаю 502, когда мой код возвращает 404. Я проверил настройки ApiGateway, но ничего не смог найти.

1 Ответ

0 голосов
/ 10 января 2019

Я нашел это: https://aws.amazon.com/premiumsupport/knowledge-center/malformed-502-api-gateway/

Это может быть из-за неправильного ответа. Я собираюсь попробовать с обновленным ответом и четырьмя полями.

{
    "isBase64Encoded": true|false,
    "statusCode": httpStatusCode,
    "headers": { "headerName": "headerValue", ... },
    "body": "..."
}

ОБНОВЛЕНИЕ : Это определенно помогает изменить ответ с этими 4 полями. Однако один и тот же запрос иногда получает 404, а иногда 502.

...