【问题标题】:Write AWS Lambda Logs to CloudWatch Log Group with Terraform使用 Terraform 将 AWS Lambda 日志写入 CloudWatch 日志组
【发布时间】:2020-05-13 22:20:29
【问题描述】:

我正在尝试将 lambda 函数的日志写入 terraform 创建的 CloudWatch 日志组。

这是 lambda 策略 json -

{
    "Version": "2012-10-17",
    "Statement": [
      {
        "Sid": "Stmt1580216411252",
        "Action": [
          "logs:CreateLogStream",
          "logs:CreateLogDelivery",
          "logs:PutLogEvents"
        ],
        "Effect": "Allow",
        "Resource": "arn:aws:logs:*:*:*"
      }
    ]
  }

这是 lambda 假设策略 json -

{
    "Version": "2012-10-17",
    "Statement": [{
        "Action": "sts:AssumeRole",
        "Principal": {
            "Service": "lambda.amazonaws.com"
        },
        "Effect": "Allow",
        "Sid": ""
    }]
}

我已将此添加到 lambda.tf 文件中 -

resource "aws_cloudwatch_log_group" "example" {
  name              = "/test/logs/${var.lambda_function_name}"
}

虽然 CloudWatch 日志组“/test/logs/${var.lambda_function_name}”是通过 terraform 创建的,但我无法将 lambda 函数的日志写入该组。

如果我将 lambda 策略 json 更改为此 -

{
    "Version": "2012-10-17",
    "Statement": [{
        "Sid": "Stmt1580204738067",
        "Action": "logs:*",
        "Effect": "Allow",
        "Resource": "*"
    }]
}

然后它会自动将日志存储在 /aws/lambda/ 目录中。

如何确保将 lambda 日志写入我创建的 CloudWatch 日志组,而不是写入 lambda 本身创建的 /aws/lambda/ 组?

【问题讨论】:

标签: amazon-web-services aws-lambda terraform terraform-provider-aws


【解决方案1】:

如果您希望 Terraform 管理 CloudWatch 日志组,您必须提前使用 Lambda 函数将用于其日志组的确切名称创建日志组。您根本无法更改名称。然后在您的 Terraform 中,您需要使日志组成为 Lambda 函数的依赖项,以确保 Terraform 有机会在 Lambda 自动创建日志组之前创建它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-19
    • 2016-11-27
    • 1970-01-01
    • 1970-01-01
    • 2018-02-16
    • 2021-06-01
    • 2016-03-22
    • 2020-10-25
    相关资源
    最近更新 更多