我想每周一次在redshift postgres数据库中运行我的数据上的机器学习模型。
我使用plumbr
将我的R脚本设置为rest api,然后我将其设置为由pm2
作为任务进行管理。我有它所以当ec2
实例启动然后继续运行时,任务启动。
我需要做的就是让R脚本运行并从机器学习模型上传新数据是运行一个简单的卷曲请求curl http://localhost:4208/main
该模型的整个过程大约需要10分钟。
如何自动执行启动ec2实例,运行curl请求然后关闭它的过程?这可以通过AWS Beanstalk完成吗?
启动新的EC2实例时,您可以传入启动指令(用户数据)。假设您正在运行Linux AMI:
所以像这样:
#!/bin/bash
curl http://localhost:4208/main
更多信息可以在这里找到:https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html
这将启动您的EC2实例与适当的curl请求,以帮助您入门。
现在,要使用您创建的启动脚本自动启动EC2实例,您需要使用命令行。
你可以在这里了解更多相关信息:https://docs.aws.amazon.com/cli/latest/userguide/cli-services-ec2-instances.html
在ec2的#User数据中写下以下脚本。这个脚本将执行你的程序,它将等待10分钟,并在ec2实例元数据的帮助下,它将停止你的ec2。
先决条件是启动具有ec2实例停止访问权限的角色的ec2实例。
ec2实例角色创建的参考URL是[在此输入链接描述] [1]
test.是
## Your Program
curl http://localhost:4208/main
# expecting curl call will finish in 10 min.
sleep 10m
# teminating your ec2 instance.
Imageid=`curl http://169.254.169.254/latest/meta-data/ami-id`
aws ec2 stop-instances --instance-ids $Imageid