Configure CloudFront in front of your site -- EC2 and (perhaps eventually also) S3.
In the default configuration, you'll save whenever your viewers are in a less costly part of the globe, because data transfer out of S3 and EC2 toward CloudFront is $0, while data transfer out of CloudFront to the Internet is based on the location of the viewer.
However... CloudFront also has 3 pricing tiers, and selecting one of the lower cost tiers comes with a little bonus: CloudFront will probably route much of your traffic through lower cost edge locations, yet they reserve the right to use any of the higher cost regions yet will never bill you the higher cost rates, even if they do.
Note that Amazon CloudFront may still occasionally serve requests for your content from an edge location in a location that is not included in your price class. When this occurs, you will only be charged the rates for the least expensive location in your price class.
https://aws.amazon.com/cloudfront/pricing/
Is there a catch? I'd suggest that there is not, and I'd further suggest that there is a viable reason why it could cost you less to haul your traffic a potentially longer distance. This arrangement allows CloudFront to carry your traffic out of the higher cost region not using the (expensive) Internet links at the point of origin but rather over private fiber optic links they own, and into a lower cost region... and then drop it onto the Internet, where Internet costs are lower.
The highest priced plan will of course achieve the best performance, but the trade-off for switching to one of the lower cost plans may not make a difference in performance or at least not one that negates the benefit of the potential cost savings.