【发布时间】:2019-08-24 03:52:02
【问题描述】:
我在 AWS 中创建了一个简单的 lambda 函数,它从 DynamoDB 返回列表。我还创建了 API Gateway 来触发 lambda 函数。当我在 AWS 控制台中测试时,该功能工作正常。但是当我在 Postman 中测试这个功能时,我总是得到 502 bad gateway 下面的错误。 ({ “消息”:“内部服务器错误” }
下面是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 Gateway Endpoint 详细信息。
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 控制台中运行良好。
知道为什么我在从 Postman 调用 API Gateway 时不断收到 502 bad gateway 错误吗?
【问题讨论】:
-
您的 API 网关设置有问题。此代码无助于解决此问题。
-
能否添加相关的 lambda 角色和策略
标签: amazon-web-services aws-lambda