The pattern you describe is quite common, what you want to do is create a subscription filter for your cloudwatch log group.
Ideally this is the pattern [CW Log Group Filter] -->[Kinesis Firehose] -->[Delivery Stream] -->[S3]
Read the following guide for an example:
As to your question on a way to periodically delete log streams, CW Log Group retention periods are configurable between 1 day up to 10 years.
Cloudwatch logs to S3 continuous exportasked 6 months ago
S3 server access logs to Cloudwatch?Accepted Answerasked 4 years ago
RDS/Postgres logs to S3Accepted Answerasked 4 years ago
how to push only error and warning logs to cloudwatchasked 2 months ago
Are we able to export only parts of the Amazon CloudWatch logs to Amazon S3?Accepted Answerasked 2 years ago
Import Custom Logs from S3 to CloudWatchAccepted Answerasked a month ago
How to stream CloudFront real time logs to cloudwatchasked 8 months ago
Is there a simple way to reduce the SDK to use only S3 ?asked 2 years ago
WAF logs to S3 and Cloudwatch?asked 3 days ago
How to give a user access only to a specific group of cloudwatch logsasked 5 months ago