Para tu información, ya existe soporte nativo para colocar cargas en almacenamiento S3, solo necesitas habilitarlo:

Por lo tanto, la interfaz de usuario de publicación actual ya lo admite.
Quizás puedas aprovechar eso si necesitas modificaciones adicionales y esto simplificará significativamente tu proyecto.
Ver: Configure an S3 compatible object storage provider for uploads