How do we invalidate the cache in AWS CloudFront CDN when publishing content?
There is nothing out-of-the-box in AEM that does this. However, a custom solution could be developed:
Alternatively, instead of creating a flush agent, the best practice is simply to leverage the "Cache-Control: max-age=..." header to control the TTL of files in the CloudFront CDN. This works instead of implementing a replication agent to invalidate the CloudFront cache. See this documentation.