为 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"