Now that our retail store is up and running, let’s order something. To do that, simply get into any item, add it to cart check out, and fill some details. For this purpose - let’s fill in your real email, because you’re about to get a confirmation for your order.
For a credit card, you can use 4242 4242 4242 4242 with any date and CVC.
Make sure to use your REAL email - because we are expected to get an update!
You are now a pleased owner of a new item, and you also got a confirmation ID, but no email has arrived. It seems like we are going to troubleshoot our problem again.
Let head back to the functions screen, and now we can see that under
catalog-shop-dev-order-fullfilment we have a problem:
Let’s get into this function, but this time, and because this is a distributed and asynchronous flow, let’s see an end-to-end trace by clicking on the recent exception invocation ID:
Which will open the trace window:
A quick examination shows us a full flow from end-to-end, starting at the API Gateway, through an SNS to the second Lambda. We can detect several issues in this trace by clicking on the error nodes:
Email address is not verified. The following identities failed the check in region.
An error occurred (ConditionalCheckFailedException) when calling the UpdateItem operationerror to our DynamoDB call.
Our main lesson here is that tracing becomes very crucial in distributed and event-driven architecture. In a few seconds, we mapped out all errors and exceptions, giving us the ability to resolve issues much faster.
In this workshop, we are not going to cover ways to fix these issues, but as a challenge - you are more than welcome to do so.