AWS Lambda 함수가 CloudWatch에 로깅 (텍스트 출력)하도록 할 수 없음
S3 버킷에 업로드 될 때 파일을 처리 할 Lambda 함수를 설정하려고합니다. console.log
파일을 업로드 할 때 출력을 볼 방법이 필요 하지만 Lambda 함수를 CloudWatch에 연결하는 방법을 알 수 없습니다.
context
내 로그 그룹이 /aws/lambda/wavToMp3
있고 로그 스트림이 인 개체를 살펴봄으로써 알아 냈습니다 2016/05/23/[$LATEST]hex_code_redacted
. 그래서 CloudWatch에서 해당 그룹과 스트림을 생성했지만 아무것도 기록되지 않았습니다.
Lambda 함수가 로그 스트림을 생성하고 Cloudwatch에 로그를 게시하려면 Lambda 실행 역할에 다음 권한이 있어야합니다.
{
"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
정책을 업데이트 한 후 새 정책을 읽으려면 모든 작업 인스턴스를 새로 고치도록 함수 설정을 업데이트해야하는 것 같습니다.
따라서 IAM에서 역할 정책을 업데이트 한 후 Lambda 콘솔에서 '테스트'버튼을 클릭하면 캐시 된 Lambda 인스턴스에 여전히 이전 역할 권한이 있으므로 Cloudwatch 로그에 기록되는 로그가 계속 표시되지 않습니다.
시간 제한을 1 초 정도 변경 하고 '저장 및 테스트'버튼을 클릭하면 Cloudwatch에서 로그를 볼 수 있습니다.
Lambda 함수가 로그 스트림을 생성하고 Cloudwatch에 로그를 게시하려면 Lambda 실행 역할에 다음 권한이 있어야합니다.
나는 이미 이러한 권한을 가지고 있지만 작동하지 않았습니다.
시간 제한을 1 초 정도 변경하고 '저장 및 테스트'버튼을 클릭하면 Cloudwatch에서 로그를 볼 수 있습니다.
시간 제한을 변경하고 저장했는데 로그가 여전히 작동하지 않습니다.
다른 역할을 할당했는데 로그가 여전히 작동하지 않습니다.
저에게 효과가 있었던 것은 "맞춤 역할 만들기"를 클릭 한 다음 "허용"을 클릭하는 것이 었습니다. 이것이 바로 로그가 생성되기 시작했지만 새 역할이 아닌 기존 역할을 사용하고 싶지 않았기 때문에 나중에 기존 역할을 할당하고 작동했습니다. 기술적으로는 작동하지 않았지만 이제는 작동하는 원래 구성으로 돌아 가야했습니다. 그림을 이동.
로깅이 발생하기위한 또 다른 필요성은 Lambda 함수가 완료를 나타내야한다는 것입니다. 예를 들어 Python 컨텍스트에서 핸들러는 None
.
람다 함수 "구성"에 "기존 역할"의 전체 경로가 있는지 확인하십시오.
역할 : 기존 역할 선택 기존 역할 : service-role / yourRoleName
어떤 이유로 yourRoleName 만 입력하면 일부 서비스 (예 : SES)에서는 작동하지만 CloudWatch에서는 작동하지 않습니다.
또한 기존 역할을 사용하는 대신 새 역할을 만들 수도 있습니다. 이렇게하면 적절한 구성으로 역할이 생성됩니다.
문제는 AWS :: Logs :: LogGroup에 의해 Cloudformation 스크립트에 로그 그룹을 생성 한 다음 Lambda 로그를이 로그 그룹에 푸시하려고했습니다. : P 초보자주의 깊게 읽은 후 Lambda가 앞서 언급 한 형식으로 자체 로그를 생성한다는 것을 발견했습니다. / aws / lambda /이 로그 그룹에 정책 권한을 제공하거나 다음과 같은 리소스를 사용하여 일반 권한 만 제공하면됩니다. arn : aws : 로그 ::: *
도움이 되었기를 바랍니다
이미 기록되었을 수 있지만 예상 한 로그를 찾을 수 없습니다.
예 :
app.use(function simpleLogger (req, res, next) {
console.info('[Logger]', req.method, req.originalUrl)
next()
})
수행 한 후 GET /hello?world=1
,
로컬 콘솔 : (간단하고 명확합니다!)
[Logger] GET /hello?world=1
CloudWatch Logs : (아래에서 정확한 로그를 쉽게 찾을 수 있습니까?)
START RequestId: a3552c34-f7a6-11e8-90ba-2fb886f31fb0 Version: $LATEST
2018-12-04T09:26:11.236Z a3552c34-f7a6-11e8-90ba-2fb886f31fb0 [Logger] GET /hello?world=1
END RequestId: a3552c34-f7a6-11e8-90ba-2fb886f31fb0
REPORT RequestId: a3552c34-f7a6-11e8-90ba-2fb886f31fb0 Duration: 41.02 ms Billed Duration: 100 ms Memory Size: 128 MB Max Memory Used: 29 MB
결론 : 너무 장황해서 원래 로그를 찾을 수 없습니다.
조금 늦었을 수도 있지만 여전히 클라우드 워치에서 람다 로그를 보는 데 어려움을 겪는 사람들을 위해. 람다 함수의 실행 역할과 관련하여 "이 함수에 기존 역할을 사용할 수 있습니다. 역할은 Lambda에서 맡을 수 있어야하며 Cloudwatch Logs 권한이 있어야합니다." 그래서 IAM에서 나는 내 기능에 할당 한 역할에 "CloudWatchLogsFullAccess"를 부여했습니다. 그런 다음 cloudwatch의 로그 아래에서이 역할이 할당 된 기능에 대한 로그를 볼 수 있습니다.
다른 답변에 따르면 클라우드 감시 로그에 로그를 게시 할 수있는 람다 권한을 부여해야합니다. AWS는이를위한 AWSLambdaExecute
정책 을 제공 했습니다. 그것은 json입니다-
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:*"
],
"Resource": "arn:aws:logs:*:*:*"
},
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject"
],
"Resource": "arn:aws:s3:::*"
}
]
}
이 정책을 람다에 할당 된 역할에 추가 할 수 있으며 로그보기를 시작해야합니다.
NOTE: It also has S3 read/write access. If you do not want it you can create a custom policy with just the logs part.
I encountered this problem but none of the answers above solved my issue. It turns out that the region was somehow set to Ohio when I first started CloudWatch. After I changed it to US East (N. Virginia), everything works fine.
CloudWatch
& CloudWatch Logs
are different Permissions, you need add CloudWatch Logs
to the policy which attached with your role.
There's a writeup called How to Monitor AWS Lambda with CloudWatch with a section on "How to Use CloudWatch Logs with Lambda". Looks like you already found your answer, but for anybody without the IAM specific issues, this may help.
'Program Tip' 카테고리의 다른 글
Django 템플릿에서 {{또는}}을 이스케이프하는 방법은 무엇입니까? (0) | 2020.12.09 |
---|---|
자바 스크립트는 주어진 크기의 빈 배열을 만듭니다. (0) | 2020.12.09 |
유형 오류 : $ .browser가 정의되지 않았습니다. (0) | 2020.12.09 |
새로운 maven hello-world 프로젝트를 만들 수 없습니다. (0) | 2020.12.09 |
RichTextBox 단락 간격을 어떻게 변경합니까? (0) | 2020.12.09 |