如何为AWS Lambda函数创建全局计数器?

时间:2018-05-07 10:42:12

标签: amazon-web-services aws-lambda serverless-framework

如果我想每2分钟启动一个lambda函数,则会调用带有索引号的api。如何在初始化时存储lambda的索引号,并在每次lambda函数成功调用api时将其递增1?

我认为只为一个计数器设置一个发电机表是过度的。

3 个答案:

答案 0 :(得分:1)

我认为使用除dynamoDB以外的其他东西会有点矫枉过正。

DynamoDB就是出于这个目的而制作的。它几乎免费用于您的用例。并且只会在运行时间内添加或多或少10毫秒。与冷启动相比,您的Lambda将会得到很多。

如果您真的想要削减DynamoDB成本和Lambda运行时,可以将计数器缓存在Lambda容器内(在处理程序之外)。

假设没有并发调用(仅通过预定事件触发),我会为每次调用执行类似的操作:

  1. 检查缓存的计数器值。
  2. 如果counter == 0,则从DynamoDB读取值。如果counter > 0,请使用该值。
  3. 做你想做的事。
  4. DynamoDB中的增量计数器和缓存的值。

答案 1 :(得分:0)

开箱即用,您可以将消息记录到CloudWatch Logs。然后,您可以创建一个度量过滤器来获取实际值。

您甚至可以使用此功能触发CloudWatch事件。

答案 2 :(得分:0)

如果API调用失败,则使lambda处理程序回调/抛出错误。 JS的例子:

export.handler = function(event, context, callback) {
  apiCall().then(resp => callback(null, resp).catch(err => callback(err));
}

使用CloudWatch,您可以获得有关lambda调用和错误的指标。通过使用数学表达式,您可以执行调用错误,该错误将为您提供成功调用的次数。您可以定义期间和时间范围。

Lambda Counter

如果您需要程序化访问,请使用AWS CLI或AWS SDK。 AWS CLI get-metric-data