代码之家  ›  专栏  ›  技术社区  ›  Ramón J Romero y Vigil

使用CDK将Lambda LogGroup KMS更新为CMS

  •  0
  • Ramón J Romero y Vigil  · 技术社区  · 3 年前

    使用 cdk 可以创建lambda函数(例如scala中的tersness):

    val lambdaFunction = lambda.Function.Builder.create...build()
    

    Lambda的创建会自动创建 LogGroup 在CloudWatch中。

    如何使用cdk将自动创建的LogGroup的KMS密钥更改为CMS?

    这个 lambdaFunction 确实有 getLogGroup 方法,但返回 ILogGroup 它没有任何setter方法。

    这个 lambda.Function.Builder 有一个 logRetention 方法,但没有相应的设置KMS密钥的方法。

    有 a similar question 这不适用,因为它要求在所有LogGroup(而不是与Lambda相关的LogGroup)之间更改KMS。

    提前感谢您的考虑和回复。

    1 回复  |  直到 3 年前
        1
  •  1
  •   luk2302    3 年前

    “Lambda的创建会自动在CloudWatch中创建一个LogGroup。” -不完全是这样,通常第一次调用lambda实际上会创建LogGroup加上第一个LogStream加上其中的第一个日志事件。CDK/CFN根本不会创建LogGroup,在删除lambda时也不会删除LogGroup。

    但是CDK/CFN 可以 做它。这只是你需要明确地做的事情。你需要创建LogGroup,指定正确的密钥、保留等。LogGroup需要遵循命名 /aws/lambda/LAMBDA_NAME_HERE 。然后,您需要在Lambda函数和LogGroup之间添加一个显式依赖项,以便Lambda仅在LogGroup之后创建。

    请注意,这不适用于已经存在的Lambdas,因为那里已经存在LogGroup。在这种情况下,您需要首先导入现有的LogGroup,或者使用“自定义资源”根据您的要求更改LogGroup的设置。


    Fyi提到的 logRetention 逻辑依赖于这样一个“自定义资源”。它创建日志组或更新现有日志组。

    推荐文章