如何将 CloudWatch 日志组流式传输到特定的 Lambda 函数版本?

如何将 CloudWatch 日志组流式传输到特定的 Lambda 函数版本?

为 CloudWatch 日志组创建新的订阅过滤器时,AWS 控制台似乎不提供选择特定 Lambda fn 版本的方法。这对于 CI/CD 很重要,我可能希望在不破坏当前订阅的情况下更新 fn 并对其进行测试。

有没有办法锁定 fn 版本以进行订阅?如果可以,那么如何实现?

答案1

编辑 2020-10-19

您还必须授予 CloudWatch 日志调用 lambda 函数的权限

aws lambda add-permission \
--function-name "foo" \
--qualifier "56" \
--statement-id "Allow-invoke-foo-or-whatever" \
--principal "logs.us-east-42.amazonaws.com" \
--action "lambda:InvokeFunction" \
--source-arn "arn:aws:logs:us-east-1:123456789012:log-group:/ecs/my-prod-server:*" \
--source-account "123456789012"

原始答案

仍然不确定是否可以通过控制台,但我找到了一个解决方案aws-cli。您可以在目标 arn 的末尾添加版本号。例如,要将日志发送到foo版本56,请执行以下操作:

aws logs put-subscription-filter \
--log-group-name "/ecs/my-prod-server" \
--filter-name "BestFilter_ever" \
--filter-pattern "{$.level=*}" \
--destination-arn "arn:aws:lambda:us-east-42:123456789012:function:foo:56"

相关内容