Pour information, il existe déjà une prise en charge native pour placer les téléchargements dans le stockage S3, il vous suffit d’activer :

L’interface utilisateur actuelle du message prend donc déjà en charge cela.
Peut-être pouvez-vous en tirer parti si vous avez besoin de modifications supplémentaires et cela devrait simplifier considérablement votre projet.
Voir : Configure an S3 compatible object storage provider for uploads