AWS Lambda@Edge отладка
В настоящее время я работаю над функцией lambda@edge. Я не могу найти журналы в CloudWatch или другие варианты отладки.
При запуске лямбды с помощью кнопки "Тест" логи записываются в CloudWatch.
Когда лямбда-функция запускается событием CloudFront, журналы не записываются.
Я на 100% уверен, что триггер события работает, и я вижу его результат.
Есть идеи, как поступить?
Спасибо вперед,
Йосси
2 ответа
1) Убедитесь, что вы предоставили разрешение для lambda отправлять журналы в cloudwatch. Ниже приведена политика AWSLambdaBasicExecutionRole, которую необходимо прикрепить к роли exection, которую вы используете для своей лямбда-функции.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "*"
}
]
}
2) Lambda создает потоки журналов CloudWatch Logs в регионах, наиболее близких к местоположениям, в которых выполняется функция. Формат имени для каждого потока журнала: /aws/lambda/us-east-1.function-name, где имя-функции - это имя, которое вы дали функции при ее создании. Поэтому убедитесь, что вы проверяете журналы cloudwatch в правильном РЕГИОНЕ.
На случай, если кто-нибудь найдет это полезным. Тот факт, что AWS ставит префикс имени вашей функции, что нарушает встроенную панель мониторинга "CloudWatch с первого взгляда", и то, что Lambda@Edge работает в нескольких регионах, вдохновил меня на создание этого шаблона панели мониторинга CloudWatch, который дает вам аналогичный стандартный мониторинг для всех регионов в одна панель приборов.