如何自动启动我的ec2实例,运行命令然后将其关闭?

问题描述 投票:4回答:2

我想每周一次在redshift postgres数据库中运行我的数据上的机器学习模型。

我使用plumbr将我的R脚本设置为rest api,然后我将其设置为由pm2作为任务进行管理。我有它所以当ec2实例启动然后继续运行时,任务启动。

我需要做的就是让R脚本运行并从机器学习模型上传新数据是运行一个简单的卷曲请求curl http://localhost:4208/main

该模型的整个过程大约需要10分钟。

如何自动执行启动ec2实例,运行curl请求然后关闭它的过程?这可以通过AWS Beanstalk完成吗?

r amazon-web-services amazon-ec2 aws-lambda amazon-elastic-beanstalk
2个回答
2
投票

启动新的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


1
投票

在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
© www.soinside.com 2019 - 2024. All rights reserved.