如何在 AWS EB Amazon Linux 2 平台上为 cron.d 添加环境属性引用
Posted
技术标签:
【中文标题】如何在 AWS EB Amazon Linux 2 平台上为 cron.d 添加环境属性引用【英文标题】:How to add environment prop references for cron.d on AWS EB Amazon Linux 2 platform 【发布时间】:2021-02-23 02:28:44 【问题描述】:我将 AWS 平台从“在 64 位 Amazon Linux 上运行的 Python 3.6”更新为“在 64 位 Amazon Linux 2 上运行的 Python 3.7”,但我无法执行 crons,因为我不知道如何为 Django 环境添加参考那里的属性。你能帮帮我吗?
在旧平台上,此“.ebextensions/cron.config”设置一切正常:
files:
"/etc/cron.d/mycron":
mode: "000644"
owner: root
group: root
content: |
3 * * * * root /usr/local/bin/script.sh > /home/ec2-user/script.log 2>&1
"/usr/local/bin/script.sh":
mode: "000755"
owner: root
group: root
content: |
#!/bin/bash
date > /tmp/date
# actual script content
source /opt/python/run/venv/bin/activate
source /opt/python/current/env
cd /opt/python/current/app/
python manage.py send_notification
exit 0
我知道我必须在 Linux 2 平台上进行更改,我必须从不同的位置运行 activate -script,这就是我现在所拥有的:
files:
"/etc/cron.d/mycron":
mode: "000644"
owner: root
group: root
content: |
3 * * * * root /usr/local/bin/script.sh > /home/ec2-user/script.log 2>&1
"/usr/local/bin/script.sh":
mode: "000755"
owner: root
group: root
content: |
#!/bin/bash
date > /tmp/date
# actual script content
source /var/app/venv/*/bin/activate
cd /var/app/current/
python manage.py send_notification
exit 0
我还注意到,当我尝试从 .platform/hooks/predeploy 执行相同操作并从 /var/app/staging 执行 python 时,一切正常,但该路径稍后不可用。问题是 os.Environment - 变量没有从 EB 配置中加载,我从 os.Environment['SOME_ENVIRONMENT_KEY'] 参考中得到了 KeyError。
【问题讨论】:
【参考方案1】:如果其他人正在寻找解决方案,我已经在此文档的帮助下解决了问题:https://aws.amazon.com/premiumsupport/knowledge-center/elastic-beanstalk-env-variables-linux2/
【讨论】:
以上是关于如何在 AWS EB Amazon Linux 2 平台上为 cron.d 添加环境属性引用的主要内容,如果未能解决你的问题,请参考以下文章
Amazon AWS Elastic Beanstalk - 连接到 mongodb
运行 AWS Deep Learning Base AMI (Amazon Linux 2) 时,如何在 Elastic Beanstalk 中设置 WSGI?
如何使用 Amazon Linux 2、单容器、无 Docker Compose 在 AWS Elastic Beanstalk 上获取 SYS_PTRACE