如何在 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

如何在 Amazon AWS 上设置一台 Linux 服务器

在 Mac OS 上安装 aws eb cli

带有 Amazon ECR Docker 映像的 AWS Elastic Beanstalk