【问题标题】:DynamoDB access in Lambda@EdgeLambda@Edge 中的 DynamoDB 访问
【发布时间】:2020-06-02 03:02:59
【问题描述】:

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

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

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

【问题讨论】:

  • dynamodb 表的配置情况如何?
  • 一切随需应变。没有配置。

标签: amazon-web-services aws-lambda amazon-dynamodb aws-lambda-edge


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    在 NodeJS 中,这将导致 below:

    // 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 的人,您可以查看this documentation

    【讨论】:

      猜你喜欢
      • 2019-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-29
      • 2018-10-12
      • 1970-01-01
      • 2022-09-23
      相关资源
      最近更新 更多