Comment configurer un environnement de niveau AWS Elastic Beanstalk Worker + Cron + Django pour les tâches périodiques? 403 Erreur interdite

L’application doit exécuter des tâches périodiques en arrière-plan pour supprimer les fichiers expirés. L’application est opérationnelle sur un serveur Web et dans un environnement de niveau professionnel.

Un fichier cron.yaml est à la racine de l’application:

version: 1 cron: - name: "delete_expired_files" url: "/networks_app/delete_expired_files" schedule: "*/10 * * * *" 

L’URL cron pointe vers une vue d’ application:

 def delete_expired_files(request): users = DemoUser.objects.all() for user in users: documents = Document.objects.filter(owner=user.id) if documents: for doc in documents: now = timezone.now() if now >= doc.date_published + timedelta(days=doc.owner.group.valid_time): doc.delete() 

Le paramètre Django ALLOWED_HOSTS est le suivant:

 ALLOWED_HOSTS = ['127.0.0.1', 'localhost', 'networksapp.elasticbeanstalk.com'] 

la tâche est en cours de planification et les requêtes envoient les requêtes à l’URL correcte, mais elles vont à la WorkerDeadLetterQueue

Le fichier journal de l’environnement de niveau travailleur affiche une erreur 403 :

“POST / networks_app / delete_expired_files HTTP / 1.1” 403 1374 “-” “aws-sqsd / 2.0”

La tâche n’est pas en cours d’exécution (les fichiers expirés ne sont pas supprimés). Cependant, lorsque j’accède à l’URL, il exécute correctement la tâche.

Je dois le faire fonctionner automatiquement et périodiquement.

Mon utilisateur IAM a cette politique:

AmazonSQSFullAccess

AmazonS3FullAccess

AmazonDynamoDBFullAccess

AdministratorAccess

AWSElasticBeanstalkFullAccess

Pourquoi la tâche n’est-elle pas en cours d’exécution? Est-ce que cela a à voir avec une autorisation IAM ? Y a-t-il une configuration manquante? Comment le faire fonctionner? Merci d’avance.