我想每周对redshift postgres数据库中的数据运行一次机器学习模型。
我使用plumbr
将R脚本设置为rest api,然后将其设置为由pm2
作为任务进行管理。我有它,所以任务在ec2
实例启动后继续运行。
要让R脚本运行并从机器学习模型上载新数据,我要做的就是运行一个简单的curl请求curl http://localhost:4208/main
模型的整个过程大约需要10分钟。
如何使启动ec2实例,运行curl请求然后将其关闭的过程自动化?这是AWS Beanstalk可以完成的事情吗?
答案 0 :(得分:2)
在启动新的EC2实例时,您可以传递启动说明(用户数据)。假设您正在运行Linux AMI:
是这样的:
#!/bin/bash
curl http://localhost:4208/main
更多信息可以在这里找到:https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html
这将以适当的curl请求启动EC2实例,以帮助您入门。
现在要使用您创建的启动脚本自动启动EC2实例,则需要使用命令行。
您可以在此处了解更多信息:https://docs.aws.amazon.com/cli/latest/userguide/cli-services-ec2-instances.html
答案 1 :(得分:1)
在ec2的#User数据中的脚本下面编写。该脚本将执行您的程序,它将等待10分钟,并在ec2实例元数据的帮助下将停止ec2。
先决条件是具有角色的启动ec2实例,该角色具有ec2实例停止访问权限。
用于创建ec2实例角色的参考URL为[在此处输入链接描述] [1]
test.sh
## 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