
golang으로 작성된 람다 함수가 있습니다. HTTP API 게이트웨이를 호출하여 실행합니다. 잘 작동하지만 내 golang 프로그램에서 생성된 stderr로 작성된 로그를 보고 싶습니다.
나는 노력했다이것
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의 콘솔을 통해 로그 그룹을 생성할 수도 있습니다.