问题
I know
- Lambda calls
PutLogEvents
to log messages internally. - CloudWatch has a limit on
PutLogEvents
.
PutLogEvents: 5 requests per second per log stream.
I want to know
- Could Lambda log stream also be throttled by
PutLogEvents
? - If so, how to know if a Lambda log stream is throttled or not?
Any error message in the log stream?
- When does Lambda call
PutLogEvents
?
for example,
- at the end of a Lambda function, it calls
PutLogEvents
once. - when flushing buffer(stdout), it calls
PutLogEvents
all the time.
回答1:
Let's brake my answer in 2 parts:
Part 1: Check answers here about your worries about being throttled from inside your lambda. Unless you're actually calling the SDK method I concur with the answers here and tell you that let Amazon handle their internal stuff. I hope this covers items 1 and 2 of your question.
Now for item 3:
AFAIK the lambda runtime sends logs:
- When your lambda starts.
- When your lambda ends (or get's interrupted by an exception).
- Timeout.
- If you explicitely use any of the logging functions provided in the runtime (according to a coworker of mine: it is safe to assume that everyting you send to
stdout
will be logged). - If you use AWS SDK inside your lambda to access other AWS services.
来源:https://stackoverflow.com/questions/53450957/lambda-log-and-cloudwatch-putlogevents-limit