【问题标题】:Execute Lambda function based on threshold根据阈值执行 Lambda 函数
【发布时间】:2020-02-02 01:11:04
【问题描述】:

我创建了一个 Lambda 函数,该函数将通过订阅 CloudWatch 日志模式来触发,该函数将依次将日志传递到网络挂钩(请参阅 https://gist.github.com/tomfa/f4e090cbaff0189eba17c0fc301c63db)。

现在,只有当函数在“y”分钟内被调用“x”次时,我才需要这个 lambda 函数来执行。

是否可以通过 SNS 禁用/启用 lambda。另一个想法是 1. 在状态更改时创建 CloudWatch 事件 2. 将此订阅到一个 SNS,该 SNS 将 如果状态从 OK 变为 ALARM,则启用 lambda 如果状态恢复正常,则禁用 lambda

【问题讨论】:

    标签: amazon-web-services aws-lambda amazon-cloudwatch


    【解决方案1】:

    您可以使用 CloudWatch Events 按计划向 Amazon SNS 主题发送消息。确保您位于正确的区域,因为 CloudWatch Events 并非在每个区域都可用。

    如何配置 Cloudwatch:

    使用 CloudWatch 并获取有关 lambda 调用和错误的指标,您可以找到成功的调用和错误、阈值计数。现在您可以使用 AWS SDK

    https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/get-metric-data.html

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

    【讨论】:

      【解决方案2】:

      您可以根据您的 CloudWatch Logs 搜索过滤器创建自定义 CloudWatch 指标

      可以在 Amazon CloudWatch Logs 用户指南中找到这方面的示例

      1. Count Log Events
      aws logs put-metric-filter \
        --log-group-name MyApp/access.log \
        --filter-name EventCount \
        --filter-pattern "" \
        --metric-transformations \
        metricName=MyAppEventCount,metricNamespace=MyNamespace,metricValue=1,defaultValue=0
      
      1. Count Occurrences
      aws logs put-metric-filter \
        --log-group-name MyApp/message.log \
        --filter-name MyAppErrorCount \
        --filter-pattern 'Error' \
        --metric-transformations \
            metricName=ErrorCount,metricNamespace=MyNamespace,metricValue=1,defaultValue=0
      

      然后您可以进入并创建一个 CloudWatch 警报,该警报将根据在 y 时间跨度内记录的 x 个这些事件触发。 CloudWatch 警报可以向触发您的 Lambda 函数的 SNS 主题发送消息

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-16
        • 1970-01-01
        • 2013-02-26
        • 2019-10-08
        • 1970-01-01
        • 2017-11-22
        相关资源
        最近更新 更多