2
votes

I know

  1. Lambda calls PutLogEvents to log messages internally.
  2. CloudWatch has a limit on PutLogEvents.

PutLogEvents: 5 requests per second per log stream.

I want to know

  1. Could Lambda log stream also be throttled by PutLogEvents?
  2. If so, how to know if a Lambda log stream is throttled or not?

Any error message in the log stream?

  1. 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
I suppose that AWS Lambda internally doesn't call PutLogEvents more than the rate limit allows (so if you have more than 5 concurrent invocations some logs will be written together). Each request is up to 1MB, so you have up to 5MB/sec which is much. - Ronyis

1 Answers

1
votes

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:

  1. When your lambda starts.
  2. When your lambda ends (or get's interrupted by an exception).
  3. Timeout.
  4. 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).
  5. If you use AWS SDK inside your lambda to access other AWS services.