2016-05-23 1 views
17

Я пытаюсь настроить функцию лямбда, которая будет обрабатывать файл при его загрузке в ведро S3. Мне нужен способ увидеть вывод console.log, когда я загружаю файл, но я не могу понять, как связать свою функцию Lambda с CloudWatch.Невозможно получить функцию AWS Lambda для записи (текстового вывода) в CloudWatch

Я понял, посмотрев на объект context, что моя группа журнала /aws/lambda/wavToMp3, а поток журнала - 2016/05/23/[$LATEST]hex_code_redacted. Поэтому я создал эту группу и поток в CloudWatch, но ничто не записывается в нее.

+0

Можете ли вы записать имя context.logGroupName и context.logStreamName на консоль lamda? а затем подтвердите, проверяете ли вы правильный поток. – Shibashis

+0

Да, я сделал это. Вот как я получил группу и поток в первую очередь. – ffxsam

+0

Интересно, что это не требует никакой дополнительной настройки, попробовали ли вы переходить к консоли облачного экрана с экрана мониторинга лямбда aws, есть ссылка на верхнюю правку? – Shibashis

ответ

32

Для того чтобы функция лямбда создала поток журналов и публиковала журналы в облачном режиме, роль выполнения лямбда должна иметь следующие разрешения.

{ 
    "Statement": [ 
     { 
      "Action": [ 
       "logs:CreateLogGroup", 
       "logs:CreateLogStream", 
       "logs:PutLogEvents" 
      ], 
      "Effect": "Allow", 
      "Resource": "arn:aws:logs:*:*:*" 
     } 
    ] 
} 

Пожалуйста, обратитесь к следующей документации AWS для получения более подробной информации http://docs.aws.amazon.com/lambda/latest/dg/intro-permission-model.html#lambda-intro-execution-role

+4

Обратите внимание на ответ ниже, hoonoh, мне нужно было обновить настройки до того, как эта новая политика действительно применяется. –

+0

Я пришел сюда, потому что столкнулся с одной и той же проблемой, в моем случае ошибка была «Log group not found». Добавляя его сюда, чтобы кто-то еще искал его, найдет этот ответ – hansaplast

1

Убедитесь, что полный путь к вашей «существующей роли» в вашей функции «Конфигурация» лямбда:

Роль: Выберите существующую роль Действующая роль: service-role/yourRoleName

По какой-то причине ввод только вашегоRoleName будет работать для некоторых служб (например, SES), но не для CloudWatch.

Кроме того, вы можете попробовать создать новую роль вместо существующей. Это создаст роль с надлежащей конфигурацией (надеюсь).

38

После того, как вы обновили свою политику, вам необходимо обновить настройки своей функции, чтобы обновить все экземпляры заданий, чтобы читать новые политики.

Итак, если вы просто нажмете кнопку «Проверить» на консоли Lambda после обновления политики ролей в IAM, кешированные экземпляры Lambda будут иметь старые разрешения на роль, поэтому вы не увидите никаких журналов, записываемых в журналы Cloudwatch.

Просто измените время ожидания на секунду и нажмите кнопку «сохранить и протестировать», и вы начнете просматривать журналы в Cloudwatch.

+3

Спасибо! Я застрял на этом в течение часа. – reggie3

+1

Это мой голос за правильный ответ. Ничто в документации не поможет, если вы столкнетесь с этой ошибкой AWS. – brycem

+0

Спасибо за это ... вот где я тоже застрял. –

5

Для лямбда-функции для создания потока журнала и публиковать журналы cloudwatch, роль выполнения лямбда должна иметь следующие разрешения

Я уже имел эти разрешения пока он не работал.

Просто измените время ожидания на секунду и нажмите кнопку «сохранить и протестировать», и вы начнете просматривать журналы в Cloudwatch.

Я изменил тайм-аут, сохранил и журналы все еще не работают.

Я назначил другую роль, и журналы все еще не работают.

Что для меня работало, было нажатие «Создать пользовательскую роль», затем «Разрешить». Это было так, и журналы начали создаваться, но поскольку я не хотел использовать новую роль, но мою существующую роль, я просто назначил свою существующую роль впоследствии, и она сработала.Поэтому технически я должен был вернуться к первоначальной конфигурации, которая не сработала, но теперь она работает. Идите фигуру.

+0

То же самое здесь, проведенное как 2 часа, пытаясь решить эту проблему. Разочаровался с тем, насколько багги и абсолютно не прозрачны и не интуитивно понятны в настройке лямбда-облака. Благодаря! – alecxe

0

Возможно, немного поздно, но для тех, кто все еще борется с тем, чтобы увидеть лямбда-журналы в облачном свете. Я заметил это в отношении роли выполнения лямбда-функции: «Вы можете использовать существующую роль с этой функцией. Обратите внимание, что роль должна быть допущена Lambda и должна иметь разрешения журнала Cloudwatch». Поэтому в IAM я предоставил «CloudWatchLogsFullAccess» роль, назначенную моей функции. то в cloudwatch, в журналах, вы увидите журналы для функций, назначенных этой роли.

0

Для выпуска был я пытался создать группу журнала в сценарии CloudFormation по: AWS :: Журналы :: LogGroup , а затем пытаюсь подтолкнуть журнал Lambda к этой группе журналов. : P Novice После тщательного чтения я обнаружил, что Lambda создает свой собственный журнал с вышеупомянутым форматом: /aws/lambda/ Нам просто нужно предоставить разрешение политики этой группе журналов или просто общее разрешение с ресурсом как: ARN: AWS: журналы ::: *

надеюсь, это поможет

0

Видимо еще одна необходимость в регистрации, так это функция Lambda должен указать завершение; например, в контексте Python, обработчик должен возвращать нечто, отличное от None.

Смежные вопросы