Like Cassandra, dynamodb requires the data model to be designed very carefully to be able to get the max out of them.
More often than not, that simply adds more complexity; people often underestimate how much a sharded mysql/Postgres can scale.
My default choice for the longest time: Postgres for the data I care about, ES as secondary index and S3 as blob storage.