Hi Stefan,
May I ask why you decided to use a SNS Topic with a Lambda subscribed to it?
Con: It seems like an extra step because you could just invoked the lambda at the end of the UserData script instead of writing to the SNS Topic at the end of the UserData script, which causes the lambda to be invoked.
Pro: It does seem cleaner to separate the concerns of the lambda running successfully and the UserData script installing Typesense successfully.
Was this your thinking or am I missing something?