我试图在AWS中调度python脚本,但是我不希望实例一直运行。因此,尝试自动化以下过程:
我无法将此脚本直接作为Lambda函数运行,因为该脚本执行一些需要更多RAM的并行处理,因此选择一个更大的AWS实例,而不是将其作为Lambda函数编写。另外,不要让这个实例一直运行,因为它很昂贵。
到目前为止,我遵循Automatic starting and stopping of AWS EC2 instances with Lambda and CloudWatch · matoski.com并创建了一个Lambda函数来在特定时间启动和停止实例,但是在实例启动后,我找不到运行python脚本的方法。
有人能指点我正确的方向吗?
我的应用程序每天运行一个实例@13:39 UST,处理完成后self关闭。它用在下面
Cloud watch Event/rules config
这将触发一个运行cron以执行Python脚本的实例
@reboot python/home/Init.py
脚本完成后,python作业将使用下面的代码段关闭自己
我在使用本文中的解决方案启动和停止实例时遇到问题。然后我按照https://aws.amazon.com/premiumsupport/knowledge-center/start-stop-lambda-cloudwatch/上的说明操作,这非常简单。基本上:
转到https://console.aws.amazon.com/iam/home#/home并在左侧选择角色。确保选择Lambda作为AWS服务,并附加在步骤1中创建的策略。
然后转到Lambda控制台,单击Create Function。选择Python3.7,然后单击“权限”旁边的下拉列表,使用现有角色并附加在步骤2中创建的IAM角色。
使用此代码:
which python
找到python的路径并将其写下来。然后,输入crontab -e
编辑CRON作业。不要使用sudo
…因为有时sudo
在您没有使用它来运行Python文件时会把事情弄糟。在我的例子中,我有一个存储密码的pgpass
文件,sudo
看不见,但是删除sudo是有效的!@reboot /path/to/python /path/to/file.py
例如,对于我来说,这是@reboot /home/init/python /home/init/Notebooks/mypredictor.py
对于提出这个问题的未来开发人员来说,一种新的解决方法是:
AmazonEC2RoleforSSM
策略的角色创建EC2所以:
按以下步骤操作:https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html
使用以下lambda骨架:
相关问题 更多 >
编程相关推荐