I think there’s an issue with how Discourse handles this. When you move uploads to S3 and set the DISCOURSE_S3_CDN_URL env variable, Discourse tries to fetch assets from S3 too. I had to move uploads and assets to S3 + Cloudfront to make it work, but it shouldn’t be needed since you only want uploads to be on S3