I generally agree with this, especially the Lambda and DynamoDB advice.
DynamoDB: I think DynamoDB is great, actually, if you think about your use cases up front and thoroughly. For most apps, that just isn't realistic and it is too easy to paint yourself into a corner. If you're not sure what you're doing, you are better off with a traditional database.
Lambda: Don't use it for your backend / API. There are too many weird limitations: request and response sizes, timeouts, etc. For handling "events" emitted by other AWS services, it is often fine (example: do something when there is an S3 upload.) I prefer ECS/Fargate for API.
DynamoDB: I think DynamoDB is great, actually, if you think about your use cases up front and thoroughly. For most apps, that just isn't realistic and it is too easy to paint yourself into a corner. If you're not sure what you're doing, you are better off with a traditional database.
Lambda: Don't use it for your backend / API. There are too many weird limitations: request and response sizes, timeouts, etc. For handling "events" emitted by other AWS services, it is often fine (example: do something when there is an S3 upload.) I prefer ECS/Fargate for API.