日志保留Lambda函数

0

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

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

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

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

1 Antwort
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
EXPERTE
beantwortet vor 6 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen

Relevanter Inhalt