Lately, I’ve been developing a Lambda function to create a pair of keys, store one in a parameter and return the other to the user. Today I got my first clean run, and I’m writing this to celebrate.
As part of learning lots of things along the way, because I hadn’t developed anything on AWS before, I found out that AWS reports errors in many different ways. Here are those that occurred to me in the last few hours.
See: AWS Lambda Invoke Errors (documentation)
Error — InvalidZipFileException
- This error occurred because the zip file I had uploaded was wrong: the files it contained were stored into a directory.
- This is a Lambda creation error, and it’s quite complete.
- Unhandled / Handled classification is limited to Lambda execution.
Error — Process exited
- This error occurred because I threw a validation error.
- I could catch this error, but don’t, so it’s classified as Unhandled.
- The logs show my error and its stack trace.
Error — Timed out
- This error occurred because generating a pair of keys is not fast (bigint maths involved) and, in my few tests, it sometimes needed more than 40 seconds.
- Surprisingly, my MacBook is faster than AWS Lambda. A few times it took less than 1 second, most of the times less than 6 seconds, and only once it timed out at 10 seconds.
- I can’t catch this error, so it’s classified as Unhandled.
Error — AccessDeniedException
- This error occurred because the role I had assigned to my Lambda function didn’t have the right to write SSM parameters.
- I catch this error and swallow it, so it’s classified as Handled.
Error — ParameterAlreadyExists
- This error occurred because I explicitly create my SSM parameter with overwrite set to false. Not gonna change it, this is by design.
- Notice how this is an exception whose name doesn’t end with Exception.
- I catch this error and swallow it, so it’s classified as Handled.
