我正在处理一个软件功能,在其中我必须使用 Django + cron + AWS 定期删除文件。问题是我做不到。使其起作用的最佳方法是什么?我是否错过了一些 AWS 配置?我已经配置了一个Web 服务器和一个工作环境,在它们上面部署了相同的应用程序版本。该任务是映射到URL(访问URL时执行该函数)的视图。在工人环境中有一条确认消息:
我的IAM角色如下:
已成功从 cron.yaml 加载 1 个计划任务。
但是在工人access_log上也会出现403错误:
"POST /networks_app/delete_expired_files HTTP/1.1" 403 2629 "-" "aws-sqsd/2.0"
cron.yaml:
version: 1
cron:
- name: "delete_expired_files"
url: "/networks_app/delete_expired_files"
schedule: "10 * * * *"
urls.py 中的 URL 映射:
urlpatterns = [
url(r'^delete_expired_files', views.delete_expired_files, name='delete_expired_files'),
]
views.py中用于删除文件的函数:
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()
我的IAM角色如下:
如果我通过浏览器访问URL,任务会被执行(过期文件将被删除)。但是,工作环境应该自动访问URL并执行任务,而不仅在我通过浏览器访问URL时才执行。如何使其正常工作?AmazonSQSFullAccess
AmazonS3FullAccess
AWSElasticBeanstalkFullAccess
AmazonDynamoDBFullAccess