簡體   English   中英

如何停止AWS Lambda函數以登錄CloudWatch

[英]How to stop AWS Lambda function to log on CloudWatch

如果您擁有大量的AWS Lambda登錄CloudWatch可能會成為巨大的隱藏成本,因為無法告訴AWS停止登錄CloudWatch平台。 我發現這樣做的唯一方法是管理自定義IAM策略(與每個lambda關聯)並明確拒絕訪問日志:... actions:

{
        "Sid": "DisableAllLogs",
        "Resource": "*",
        "Action": [
            "logs:CreateLogGroup",
            "logs:CreateLogStream",
            "logs:PutLogEvents"
        ],
        "Effect": "Deny"
}

現在我正在嘗試對策略進行細化,只允許一些lambda記錄。 為此,我正在使用策略的Condition參數:

{
        "Sid": "EnableLogsForWantedLambdaTriggers",
        "Resource": "*",
        "Condition": {
            "ArnEquals": {
                "aws:SourceArn": "arn:aws:lambda:REGION:ACCOUNT-ID:function:FUNCTION-NAME"
            }
        },
        "Action": [
            "logs:CreateLogGroup",
            "logs:CreateLogStream",
            "logs:PutLogEvents"
        ],
        "Effect": "Allow"
}

但是這樣就沒有日志發送到CloudWatch。 我認為源ARN是錯誤的,但我無法找到正確的。

有線索嗎?

我發現的一種可能的解決方法是將策略重點放在資源上,而不是操作的調用者ARN上。 所以,如果我現在是lambda logGroupNamelogStreamName (我現在總是這些)我可以只遵循記錄器創建的資源上的操作,遵循記錄的命名約定

{
  "Version": "2012-10-17",
  "Statement": [
    {
        "Sid": "EnableLogsForWantedLambdaTriggers",
        "Resource": [
            "arn:aws:logs:<region>:<ID>:log-group:<logGroupName>:log-stream:<logStreamName>"
        ],
        "Action": [
            "logs:CreateLogGroup",
            "logs:CreateLogStream",
            "logs:PutLogEvents"
        ],
        "Effect": "Allow"
    }
  ]
}

通過這種方式,我可以選擇啟用想要的lamda和/或(在流名稱上)選擇的函數版本($ LATEST,1,2,...)。

例如,下一個將僅啟用函數的開發版本而忽略生產版本:

{
  "Version": "2012-10-17",
  "Statement": [
    {
        "Sid": "EnableLogsForWantedLambdaTriggers",
        "Resource": [
            "arn:aws:logs:<region>:<ID>:log-group:<logGroupName>:log-stream:*/*/*/[$LATEST]*"
        ],
        "Action": [
            "logs:CreateLogGroup",
            "logs:CreateLogStream",
            "logs:PutLogEvents"
        ],
        "Effect": "Allow"
    }
  ]
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM