Укажите лог-группу для лямбда AWS?

Есть ли способ указать группу журналов CloudWatch, к которой относится журнал лямбда AWS? Кажется, он создается непосредственно из лямбда-имени; однако было бы особенно удобно, например, суммировать множественные лямбда с одной лог-группой. Нам особенно интересно указывать группу журналов, когда лямбда создается шаблоном CloudFormation.

Ответ 1

Я не думаю, что это возможно.

Даже если это было возможно, каждый экземпляр AWS Lambda все равно записывал бы свой собственный поток журналов. И хотя разные вызовы одной и той же лямбды могут записываться в один и тот же лог-поток (когда экземпляр лямбда повторно используется), это, безусловно, не будет иметь место для разных lambdas (поскольку они должны использовать разные экземпляры lambda).

В результате у вас должен быть инструмент, который объединяет несколько потоков журналов. Если да, то какая проблема заключается в том, чтобы сделать его более универсальным, чтобы он мог агрегировать лог-потоки из разных групп журналов?

Ответ 2

На самом деле, возможно, вы можете, по крайней мере, по крайней мере. Я тоже искал ответ и попробовал. Вот фрагмент двух ресурсов; лямбда-функция и группа журналов:

"MyLambdaFunction": {
    "Type": "AWS::Lambda::Function",
    "DependsOn": "ReadWriteRole",
    "Properties": {
        //snip
    }
},

"MyLambdaFunctionLogGroup": {
    "Type": "AWS::Logs::LogGroup",
    "DependsOn": "MyLambdaFunction",
    "Properties": {
        "LogGroupName": {"Fn::Join": ["", ["/aws/lambda/", {"Ref": "MyLambdaFunction"}]]},
        "RetentionInDays": 14
    }
},

Я обнаружил, что группа журналов была создана с сохранением 14 дней, как указано. Когда функция лямбда работает, она создает журналы в этой группе. Однако, когда я удаляю стек, кажется, что группы журналов не удалены, и теперь удержание установлено на никогда не истекает. Возможно, это достаточно хорошо, поэтому потоки не слишком из-под контроля...

Ответ 3

Создание группы журналов, как указано в одном из ответов, работает. Чтобы сохранить политику хранения после удаления стека, просто добавьте DeletionPolicy.

"MyLambdaFunctionLogGroup": {
  "Type": "AWS::Logs::LogGroup",
  "DependsOn": "MyLambdaFunction",
  "DeletionPolicy": "Retain",
  "Properties": {
    "LogGroupName": {"Fn::Join": ["", ["/aws/lambda/", {"Ref": "MyLambdaFunction"}]]},
    "RetentionInDays": 14
  }
}

Ответ 4

Интересно., когда я пытаюсь это сделать, создается группа журналов, но потоки не записываются. Моя Lambda продолжает записывать в поток журнала по умолчанию., Лямбда-разрешения должны разрешать доступ к новой группе.