When should be use Amazon DynamoDB vs. Amazon S3?

Amazon DynamoDB is used for storing structured data. The data in DynamoDB is also indexed by a primary key for fast access. Reads and writes in DynamoDB have very low latency due to the use SSD.
Amazon S3 is mainly used for storing unstructured binary large objects based data. It does not have a fast index like DynamoDB. So we should use Amazon S3 for storing objects with infrequent access requirements.
Another consideration is size of the data. In DynamoDB the size of an item can be maximum 400 kilobytes. Whereas Amazon S3 supports size as large as 5 terabytes for an object.
Therefore, DynamoDB is more suitable for storing small objects with frequent access and S3 is ideal for storing very large objects with infrequent access.