In a lot of ways it feels like that there is a fair bit of crossover between all of the tools (at least in the CLI area), and that they would work pretty synergistically together (or outright replace each other)

For example, from my little experience playing with/reading about them:

Amplify seems nice for quickly generating some common 'stack features' for a project, but seems less nice when it comes to customising those things later on, and since it (currently) seems to only generate CloudFormation json, and doesn't appear as though it has any SAM features, it all feels pretty verbose.

SAM is nice and relatively quick for implementing the various little things it supports, but very quickly degenerates into having to manually wire together a bunch of CloudFormation yaml directly, and has a few interesting quirks/similar with regards to file uploads, stacksets, etc.

Cloud Development Kit (CDK) sounds like it will be a good toolset for tying together features and functions, and in a lot of ways feels like it could encapsulate or almost replace the others. In particular, I get the feeling that everything Amplify currently does could be done in a simpler/more maintainable way with CDK (or perhaps Amplify could use CDK's functionality under the hood)

If I had to guess.. I would say that a combination of CDK + SAM's translations would make for the 'nicest' end result.. but this is all high level pondering/speculation. Ultimately it comes down to what is going to make my life easier/quicker/less boilerplatey as a developer, and which of these is likely to be hanging around in the long run.