S3 bucket specific data can be available in Cost and Usage Reports (CUR) . The CUR can be setup to include the Resource ID, which in the case of S3 will be the S3 Bucket. There are public labs (Level 200) that can help you learn how to query the CUR from Athena .
For CloudFront, there are 2 questions here. (1) How much content is being served by CloudFront. (2) How much content is being pulled from S3 as the Origin. CloudFront has logs  information that can tell you how much data is being served. To know who and how much is being requested from S3, you'll need to use S3 Server Access Logs . Neither of these logging methods will give you any pricing information. Splitting the costs based on CloudFront requests and S3 requests will need to be analyzed.
You can use tags to track your costs. You'll have to create a tag for your buckets and then activate them. After you activate them, you have to wait up to 24 hours for them to be effective. Here's a document on how to use them and activate them. The cost explorer will separate the costs based on the tags then. https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html
How to use s3 life cycle policy for multiple buckets those starting with some fixed naming ?asked 3 months ago
S3 Individual Bucket Chargesasked 8 months ago
Correct process for configuring S3 bucket so ONLY Cloudfront can access?asked 3 years ago
Cross account access single s3 buckets without listing all buckets to another accountasked a month ago
Restricting access to video content using cloudfrontasked 3 months ago
S3 + Cloudfront Combo not working Properly For Video Streamingasked 8 days ago
Trying To Embed An S3 CloudFront Distribution Video In A Simple PageAccepted Answerasked 9 months ago
Lightsail S3 Bucket behind Lightsail Distributionasked 5 months ago
S3 Inventory : Is there a limit to the number of objects in a bucket that will show up in the inventory?Accepted Answerasked 4 years ago
Set the access permission of objects in S3 bucketsasked 7 months ago