日志保留Lambda函数

0

【以下的问题经过翻译处理】 每当我们使用CDK创建一个Lambda函数时,它还会创建一个日志保留Lambda函数。这是默认的吗? 我知道CloudWatch日志会保留很长一段时间。为了节省成本,我们可能想将保留时间设置为较短的日期。我们不能将其设置为单一/全局配置吗?为每个创建的Lambda函数创建一个日志保留Lambda函数只会带来一些噪音。

这个论坛中的某个专家能否帮助我们-

  1. 我们是否可以删除这个Lambda函数?
  2. 有没有一种方法可以在单个地方设置与日志相关的配置?
  3. 有没有CDK的配置可以更改,以便我们在将来的函数中避免创建这个Lambda函数?

请找到日志保留Lambda函数的gist链接 https://gist.github.com/gvnavin/71ec6310480834f632370b882ab6a581

profile picture
专家
已提问 5 个月前9 查看次数
1 回答
0

【以下的回答经过翻译处理】 当您在Lambda函数构建中指定logRetention时,CDK会创建一个自定义资源,该资源使用Lambda函数实现。您可以删除Lambda函数,但如果您需要删除原始堆栈,则可能会出现问题。日志保留功能在同一CDK应用程序中的所有函数之间共享。

相反,您可以作为CDK应用程序的一部分创建一个日志组。创建日志组时,可以定义其保留期。日志组必须命名为/aws/lambda/<function name>.

以下是一个示例:

from constructs import Construct
from aws_cdk import (
    Stack,
    aws_lambda as _lambda,
    aws_logs as _logs
)

class CdkWorkshopStack(Stack):

    def __init__(self, scope: Construct, id: str, **kwargs) -> None:
        super().__init__(scope, id, **kwargs)

        # 定义AWS Lambda资源
        my_lambda = _lambda.Function(
            self, 'HelloHandler',
            function_name="HelloFunction",
            runtime=_lambda.Runtime.PYTHON_3_7,
            code=_lambda.Code.from_asset('lambda'),
            handler='hello.handler'
        )

        log_group = _logs.LogGroup(
            self, "Logs",
            log_group_name="/aws/lambda/HelloFunction",
            retention=_logs.RetentionDays.ONE_DAY
        )

profile picture
专家
已回答 5 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则