【问题标题】:How can I increase the policy limits when I stream multiple cloudwatch log group to one lambda?当我将多个 cloudwatch 日志组流式传输到一个 lambda 时,如何增加策略限制?
【发布时间】:2026-01-05 00:10:01
【问题描述】:

我设置了一个 lambda 函数,由许多 cloudwatch 日志组触发。为了做到这一点,我在日志组aws lambda add-permission 上添加了调用函数权限,并将订阅添加为 lambda 作为目标aws logs put-subscription-filter。我需要将数百个日志组流式传输到一个 lambda,这使得 lambda 触发策略非常大。

此流程中有两个命令aws lambda add-permissionaws logs put-subscription-filter。我需要为每个日志组运行这两个命令。我添加了 46 个 cloudwath 日志组作为 lambda 触发器,但添加第 47 个时出现错误。

我得到的错误是这个命令:

aws lambda add-permission --function-name $AGGREGATOR_NAME \
    --statement-id add-permission-$lambdaName --action lambda:InvokeFunction \
    --principal logs.ap-southeast-2.amazonaws.com \
    --source-arn $logArn
An error occurred (PolicyLengthExceededException) when calling the AddPermission operation: The final policy size (20623) is bigger than the limit (20480).
arn:aws:logs:ap-southeast-2:***

有没有办法解决这个问题? 这是将数百个日志组流式传输到一个 lambda 的正确方法吗?

我尝试在命令中使用wildcard,但出现验证错误。

aws lambda add-permission --function-name $AGGREGATOR_NAME --statement-id $ID --action lambda:InvokeFunction --principal logs.ap-southeast-2.amazonaws.com --source-arn "arn:aws:logs:*:*:log-group:/aws/lambda/hello*:*"

An error occurred (ValidationException) when calling the AddPermission operation: 1 validation error detected: Value 'arn:aws:logs:*:*:log-group:/aws/lambda/hello*:*' at 'sourceArn' failed to satisfy constraint: Member must satisfy regular expression pattern: arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\-])+:([a-z]{2}((-gov)|(-iso(b?)))?-[a-z]+-\d{1})?:(\d{12})?:(.*)

【问题讨论】:

  • 似乎错误不是由aws logs put-subscription-filter api调用引起的。它是由aws lambda add-permission 引起的吗?
  • 是的,你是对的,错误来自添加权限。我更新了我的问题

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


【解决方案1】:

解决此问题的一种方法是在--source-arn 中使用通配符。通过这样做,您不需要为每个 CloudWatch 日志组制定一个基于 lambda 资源的策略。当然,最简单的方法是让all日志组执行lambda:InvokeFunction。在这种情况下,您只需要

aws lambda add-permission --function-name $AGGREGATOR_NAME \
    --statement-id add-permission-$lambdaName --action lambda:InvokeFunction \
    --principal logs.ap-southeast-2.amazonaws.com

请注意,--source-arn 已被删除。

【讨论】:

  • 我想使用通配符来限制日志组,但出现验证错误。我已经发布了我的问题
  • @JoeyYiZhao 您必须指定地区和帐号。例如,arn:aws:logs:us-east-1:123456789012:log-group:/aws/lambda/hello*:*
最近更新 更多