Запись AWS лямбда-логов в CloudWatch Log Group с помощью Terraform - PullRequest
0 голосов
/ 28 января 2020

Я пытаюсь записать журналы лямбда-функции в CloudWatch Log Group, созданную terraform.

Это лямбда-политика json -

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

Это лямбда предположим, политика 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 Log Group '/ test / logs / $ {var. lambda_function_name} 'создается через terraform, я не могу записать журнал лямбда-функции в эту группу.

Если я изменю лямбда-политику json на эту -

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

Затем он автоматически сохраняет журнал в каталоге / aws / lambda /.

Как я могу убедиться, что лямбда-журналы записываются в созданную мной группу журналов CloudWatch, а не в / aws / lambda / group? созданный самой лямбдой?

1 Ответ

0 голосов
/ 28 января 2020

Если вы хотите, чтобы Terraform управлял группой журналов CloudWatch, вы должны заранее создать группу журналов с точным именем, которое функция Lambda будет использовать для своей группы журналов. Вы не можете изменить имя вообще. Затем в вашей Terraform вам нужно сделать группу журналов зависимостью от функции Lambda, чтобы у Terraform была возможность создать группу журналов до того, как Lambda создаст ее автоматически.

...