Amazon-Web-Services

如何將 CloudWatch 日誌組流式傳輸到特定的 Lambda 函式版本?

  • October 19, 2020

在為 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 的末尾添加版本號。例如,要將日誌發送到fooversion 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"

引用自:https://serverfault.com/questions/1037111