![](/img/trans.png)
[英]How can I trigger a lambda when a log group is created in cloudwatch?
[英]How can I increase the policy limits when I stream multiple cloudwatch log group to one lambda?
我已经设置了一个 lambda function 被许多 cloudwatch 日志组触发。 为此,我在日志组aws lambda add-permission
权限上添加了调用 function 权限,并将订阅添加为 lambda 作为目标aws logs put-subscription-filter
。 有数百个日志组我需要 stream 到一个 lambda 这使得 lambda 触发策略非常大。
此流程中有两个命令aws lambda add-permission
和aws 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:***
有没有办法解决这个问题? 这是将数百个日志组 stream 到一个 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})?:(.*)
解决这个问题的一种方法是在--source-arn
中使用通配符。 通过这样做,您不需要为每个 CloudWatch 日志组制定一个 lambda 基于资源的策略。 当然,最简单的方法就是让所有的日志组都执行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
已被删除。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.