
У меня есть лямбда-функция, написанная на golang. Я запускаю ее через вызов HTTP API gateway. Она работает нормально, но я хотел бы видеть логи, записанные в stderr, которые создает моя golang-программа.
Я пыталсяэтот
aws logs describe-log-groups
но он показывает пустой массив:
{
"logGroups": []
}
На самом деле я могу видеть логи только тогда, когда вызываю лямбда-функцию напрямую, без API-шлюза, например так:
aws lambda invoke --function-name $FUNCTION_NAME $output --log-type Tail --query 'LogResult'
В этом случае журнал печатается сразу после вызова.
Но было бы еще лучше увидеть логи лямбда-функции, когда я вызываю ее через HTTP API-шлюз.
Обновление 1
Я добавил группу журналов с именем /aws/lambda/$FUNCTION_NAME
:
aws logs create-log-group --log-group-name /aws/lambda/$FUNCTION_NAME
И добавил к нему поток логов:
aws logs create-log-stream --log-group-name /aws/lambda/$FUNCTION_NAME --log-stream-name /aws/lambda/$FUNCTION_NAME
Затем я вызываю свою лямбда-функцию через API, чтобы создать некоторые логи. Теперь проверяю логи:
aws logs get-log-events --log-group-name /aws/lambda/$FUNCTION_NAME --log-stream-name /aws/lambda/$FUNCTION_NAME
И получите ответ:
{
"nextForwardToken": "f/7872383232323",
"events": [],
"nextBackwardToken": "b/8080823092093"
}
Так что у меня нет никаких событий... хм...
Я проверил эту группу логов в консоли. Там тоже пусто.
Обновление 2
Я добавил CloudWatchFullAccess
политику к роли, прикрепленной к этой лямбда-функции:
aws iam attach-role-policy --role-name $roleName \
--policy-arn arn:aws:iam::aws:policy/CloudWatchFullAccess
Вызвал API, перепроверил логи, все еще пусто. Интересно, что когда я перечисляю политики ролей, он показывает пустой массив. Хотя я просто установил CloudWatchFullAccess выше.
aws iam list-role-policies --role-name $roleName
{
"PolicyNames": []
}
решение1
Когда вы создаете лямбда-функцию, она должна иметь связанную с ней группу журналов, но, похоже, в вашей учетной записи их нет. Вы можете попробовать создать новую группу журналов с таким именем '/aws/lambda/<function_name>'
и посмотреть, решит ли это проблему. Я бы также попробовал войти в веб-консоль, чтобы убедиться, что вы видите там ту же проблему. Вы также можете создать группу журналов через консоль в cloud watch.