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.