Which type to use for a particular microservice comes down to the requirements. Do you need a fast response to the user, do you need a high degree of resiliency or is security the highest priority for example. As mentioned, for the decoupled services, unless they are purely background processes, it will be really important to be able to push information from your backend to your frontend. This means either push notifications for mobile apps, or websockets for a web application.

Step Functions is also relevant here but deserves an article of its own. Step functions enable you to design an asynchronous fault-tolerant pipeline of Lambda functions. You can read more about this service here

Did I miss any microservice types that you believe are essential? - let me know!