Amazon web services AWS API网关始终返回502坏网关

Amazon web services AWS API网关始终返回502坏网关,amazon-web-services,aws-lambda,Amazon Web Services,Aws Lambda,我在AWS中创建了一个简单的lambda函数,它从DynamoDB返回列表。我还创建了API网关来触发lambda函数。当我在AWS控制台中测试时,该功能工作正常。但当我在Postman中测试这个函数时,我总是得到下面的502坏网关错误。 { 消息:内部服务器错误 } 下面是node.js中的函数: const doc = require('dynamodb-doc'); const dynamo = new doc.DynamoDB(); /** * Provide an event t

我在AWS中创建了一个简单的lambda函数,它从DynamoDB返回列表。我还创建了API网关来触发lambda函数。当我在AWS控制台中测试时,该功能工作正常。但当我在Postman中测试这个函数时,我总是得到下面的502坏网关错误。 { 消息:内部服务器错误 }

下面是node.js中的函数:

const doc = require('dynamodb-doc');

const dynamo = new doc.DynamoDB();

/**
 * Provide an event that contains the following keys:
 *
 *   - operation: one of the operations in the switch statement below
 *   - tableName: required for operations that interact with DynamoDB
 *   - payload: a parameter to pass to the operation being performed
 */
exports.handler = async (event) => {

    const operation = event.operation;
    const payload = event.payload;

    if (event.tableName) {
        payload.TableName = event.tableName;
    }

    switch (operation) {
        case 'create':
            return await dynamo.putItem(payload).promise();
        case 'read':
            return await dynamo.getItem(payload).promise();
        case 'update':
            return await dynamo.updateItem(payload).promise();
        case 'delete':
            return await dynamo.deleteItem(payload).promise();
        case 'list':
            return await dynamo.scan(payload).promise();
        case 'echo':
            return payload;
        case 'ping':
            return 'pong';
        default:
            throw new Error(`Unrecognized operation "${operation}"`);
    }
};
下面是生成的API网关端点详细信息

API endpoint: https://iabzqisam7.execute-api.us-east-1.amazonaws.com/test/moneyAppDynamoDBOperationsLambda
Authorization: NONE
Method: ANY
Resource path: /moneyAppDynamoDBOperationsLambda
Stage: test
以下是我如何尝试使用Postman测试API:

 Postman  URL(Get) : https://iabzqisam7.execute-api.us-east-1.amazonaws.com/test/moneyAppDynamoDBOperationsLambda

    Headers: Key: content-type, Value: application/json
    Body (raw) :
    {
        "operation": "list",
        "tableName": "Advertiser",
        "payload": {
            "TableName": "Advertiser"
        }
    }
它在AWS控制台中工作得非常好

你知道为什么我在从邮递员那里调用API网关时总是收到502错误网关吗

502网关错误异常,通常用于返回的不兼容输出 来自Lambda代理集成后端,偶尔用于 由于负载过重,导致调用顺序错误

API getway输出不会告诉您该问题与Lambda错误或API getway或策略问题有关

API网关返回了502,这意味着它不理解Lambda返回的输出,并向您提供{“消息”:“内部服务器错误”}502

使用API getway上的enable logging进行调试

创建新的IAM角色以允许API网关将日志推送到CloudWatch。 附上以下保单附件:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:DescribeLogGroups",
                "logs:DescribeLogStreams",
                "logs:PutLogEvents",
                "logs:GetLogEvents",
                "logs:FilterLogEvents"
            ],
            "Resource": "*"
        }
    ]
}
信托政策:

在API网关控制台->转到设置->添加API网关CloudWatch日志角色的ARN->保存

转到API的阶段。在“CloudWatch设置”下,选择“启用CloudWatch日志”。将“日志级别”设置为“信息”。选择“记录完整的请求/响应数据”

请检查日志并共享有问题的错误日志

用于代理集成的Lambda函数的输出格式

如果函数输出的格式不同或格式不正确,API网关将返回502错误网关错误响应

. 502网关错误异常,通常用于返回的不兼容输出 来自Lambda代理集成后端,偶尔用于 由于负载过重,导致调用顺序错误

API getway输出不会告诉您该问题与Lambda错误或API getway或策略问题有关

API网关返回了502,这意味着它不理解Lambda返回的输出,并向您提供{“消息”:“内部服务器错误”}502

使用API getway上的enable logging进行调试

创建新的IAM角色以允许API网关将日志推送到CloudWatch。 附上以下保单附件:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:DescribeLogGroups",
                "logs:DescribeLogStreams",
                "logs:PutLogEvents",
                "logs:GetLogEvents",
                "logs:FilterLogEvents"
            ],
            "Resource": "*"
        }
    ]
}
信托政策:

在API网关控制台->转到设置->添加API网关CloudWatch日志角色的ARN->保存

转到API的阶段。在“CloudWatch设置”下,选择“启用CloudWatch日志”。将“日志级别”设置为“信息”。选择“记录完整的请求/响应数据”

请检查日志并共享有问题的错误日志

用于代理集成的Lambda函数的输出格式

如果函数输出的格式不同或格式不正确,API网关将返回502错误网关错误响应

.
API网关设置有问题。这段代码对解决这一问题毫无帮助。是否可以添加lambda角色和策略?API网关设置有问题。这段代码对解决这一问题毫无帮助。您可以添加有问题的lambda角色和策略吗