将 (Lambda) 订阅加入 CW Logs 组

Put (Lambda) subscription on CW Logs group

我正在尝试从正在扫描具有正确标签的 lambda 的 Lambda 函数订阅 CW 日志组。调用 put_subscription_filter 时抛出错误:

"An error occurred (InvalidParameterException) when calling the PutSubscriptionFilter
 operation: Could not execute the lambda function. Make sure you have given CloudWatch Logs
 permission to execute your function."

在放置订阅过滤器的文档中声明需要 iam:PassRole 权限。我已经同意了。我已通过授予它完整的管理员权限来确保这不是 Lambda 函数的前提问题。

通过读取错误表明是 CW Logs 需要权限才能执行某个函数,我猜这可能是它们的意思是订阅目标函数。我在这里尝试了很多不同的东西,但仍然没有雪茄。

在控制台中设置订阅过滤器非常简单,没有修改或创建任何策略,如我所见。

有没有人有这方面的经验或任何输入?

您需要添加 lambda 调用权限,以便 CloudWatch 可以在日志可用时发送和执行 lambda

使用 AWS CLI 是最简单的方法

aws lambda add-permission \
    --function-name "helloworld" \
    --statement-id "helloworld" \
    --principal "logs.region.amazonaws.com" \
    --action "lambda:InvokeFunction" \
    --source-arn "arn:aws:logs:region:123456789123:log-group:TestLambda:*" 

使用控制台

 1. Go to Lambda Function
 2. Configuration -> Permissions tab
 3. Scroll down and Click Add permissions
 4. Choose "AWS service"
 5. Principal - CloudWatch log group ARN
 6. Action - Lambda:InvokeFunction
 7. Statement Id - policy statement name, anything meaningful 
 8. Save

通过 CLI 或控制台完成后,尝试创建对该 lambda 的 CloudWatch 订阅