应用程序需要在后台运行定期任务以删除过期文件。该应用程序已启动并在Web服务器和工作器层环境中运行。
cron.yaml 文件位于应用的根目录:
version: 1
cron:
- name: "delete_expired_files"
url: "/networks_app/delete_expired_files"
schedule: "*/10 * * * *"
cron网址指向应用视图:
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()
Django ALLOWED_HOSTS 设置如下:
ALLOWED_HOSTS = ['127.0.0.1', 'localhost', 'networksapp.elasticbeanstalk.com']
正在安排任务,并且查询正在将请求发送到正确的网址,但是他们将转到 WorkerDeadLetterQueue
工作者层环境日志文件显示 403 错误:
“POST / networks_app / delete_expired_files HTTP / 1.1”403 1374“ - ”“aws-sqsd / 2.0”
未执行任务(未删除过期文件)。但是当我访问url时,它会正确执行任务。
我需要让它自动定期运行。
我的 IAM 用户有以下政策:
AmazonSQSFullAccess
AmazonS3FullAccess
AmazonDynamoDBFullAccess
AdministratorAccess
AWSElasticBeanstalkFullAccess
为什么不执行任务?这是否与任何 IAM 权限有关?有没有丢失的配置?如何使它工作?提前谢谢。