3

需要您帮助理解一些概念。我有一个在 CloudFront 上使用 Lambda@Edge 的 Web 应用程序。此 lambda 函数访问 DynamoDB - 进行大约 10 个独立查询。这偶尔会产生错误,尽管当我单独测试 lambda 函数时它可以完美运行。我无法从云端日志中理解,Lambda@Edge 也没有出现在 CloudWatch 中。

我感觉 DynamoDB 查询是罪魁祸首。(因为这就是我在 Lambda 函数中所做的一切)为了确保,我将数据复制到所有区域。但这并没有解决问题。我增加了分配给 lambda 函数的超时和内存。但这并没有任何帮助。但是,减少数据库查询的数量似乎有所帮助。

你能帮我理解这个吗?在 Lambda@Edge 中进行数据库查询有错吗?有没有办法获取 Lambda@Edge 的详细日志?

4

2 回答 2

1

Lambda@Edge 日志显示在调用 Lambda 的区域下的 CloudWatch 中。我怀疑您只需要进入 CloudWatch 并更改到正确的区域即可查看日志。如果您自己调用 CloudWatch,这将是您所在的区域,而不是您创建 Lambda 的区域。

一旦你有了日志,你应该有更多的信息可以继续。

于 2020-02-18T08:54:36.217 回答
1

迟了一年多,但你永远不知道有人从中受益。Lambda@Edge 不会在特定区域中运行,因此,如果您连接到 DynamoDB 表,则需要定义可以找到该表的区域。

在 NodeJS 中,这将导致以下结果:

// Load the AWS SDK for Node.js
var AWS = require('aws-sdk');
// Set the region 
AWS.config.update({region: 'REGION'});

// Create DynamoDB document client
var docClient = new AWS.DynamoDB.DocumentClient({apiVersion: '2012-08-10'});

正如 F_SO_K 提到的,您可以在离您最近的区域中找到您的 CloudWatch 日志。如何找出将是哪个区域(如果您是唯一使用该特定 Lambda@Edge 的区域,您可以查看此文档

于 2021-06-22T20:08:53.140 回答