Amazon-Web-Services
如何將 CloudWatch 日誌組流式傳輸到特定的 Lambda 函式版本?
在為 CloudWatch 日誌組創建新訂閱過濾器時,AWS 控制台似乎沒有提供選擇特定 Lambda fn 版本的方法。這對於 CI/CD 很重要,我可能想在不中斷目前訂閱的情況下更新 fn 並對其進行測試。
有沒有辦法鎖定訂閱的 fn 版本?如果是這樣,那麼您如何實現這一目標?
編輯 2020-10-19
您還必須授予 CloudWatch logs呼叫 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
version56
,請執行以下操作: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"