【问题标题】:How can I automatically spin up my ec2 instance, run a command and then shut it down?如何自动启动我的 ec2 实例、运行命令然后将其关闭?
【发布时间】:2019-09-13 05:27:52
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: r amazon-web-services amazon-ec2 aws-lambda amazon-elastic-beanstalk


    【解决方案1】:

    在您的 ec2 的 #User 数据中编写以下脚本。该脚本将执行您的程序,它将等待 10 分钟,并在 ec2 实例元数据的帮助下停止您的 ec2。

    先决条件是启动具有 ec2 实例停止访问权限的角色的 ec2 实例。

    ec2 实例角色创建的参考网址是[在此处输入链接描述][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
    

    【讨论】:

      【解决方案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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-01-25
        • 1970-01-01
        • 2015-05-01
        • 2018-06-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多