如何为周期性任务设置AWS Elastic Beanstalk Worker Tier Environment + Cron + Django? 403禁止错误

时间:2016-02-06 03:22:49

标签: python django amazon-web-services cron server

应用程序需要在后台运行定期任务以删除过期文件。该应用程序已启动并在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 权限有关?有没有丢失的配置?如何使它工作?提前谢谢。

0 个答案:

没有答案