Creo que hay un problema con la forma en que Discourse maneja esto. Cuando mueves las cargas a S3 y estableces la variable de entorno DISCOURSE_S3_CDN_URL, Discourse intenta obtener los activos de S3 también. Tuve que mover tanto las cargas como los activos a S3 + Cloudfront para que funcionara, pero no debería ser necesario, ya que solo quieres que las cargas estén en S3.