在AWS上运行Daily R Jobs同时节省资金

时间:2019-12-06 16:50:13

标签: r amazon-web-services amazon-s3 amazon-ec2 cron

我的目标是每天让NFL比赛焕然一新。

我目前使用R包nflscraprhttps://github.com/maksimhorowitz/nflscrapR)。

我当前的刷新脚本如下:

library(dplyr)
library(nflscrapr)
library(aws.s3)

source('https://github.com/leesharpe/nfldata/blob/master/code/plays.R')

### ...other data manipulations...

### save to AWS S3 bucket

### FINISH! 

按播放数据更新NFL播放并保存到AWS S3实例。因此,我能够访问不同计算机上的数据。很好(这是nflscrapr社区和Lee Sharpe的主要支持者),但是我想在AWS上创建一个cron作业来每天运行。

关于如何执行此操作有很多想法,例如运行AWS Lambda以启动工作;但是,NFL数据的刷新可能需要30分钟以上的漫长过程。根据AWS网站(https://aws.amazon.com/about-aws/whats-new/2018/10/aws-lambda-supports-functions-that-can-run-up-to-15-minutes/)的说法,Lambda只能在最多3 GB RAM的情况下运行函数15分钟,因此该选项已完全消失。

另一个想法是创建一个完整的EC2实例来运行此代码,并计划每天早晨执行cron作业以启动脚本。但是,如果一个带有2个CPU,8 GB RAM(t2.Large)的简单EC2始终在运行并等待cron作业,则每月的费用约为70美元,这对我来说不值得。

由于这项工作大约需要三十分钟,并且一天只需要运行一次,因此(每天)有没有办法

  1. 在cron作业之前立即启动EC2
  2. cron作业启动R脚本,将刷新的数据保存到S3
  3. 终止EC2实例

或者每天运行此脚本后可能创建并销毁一个新的EC2实例?

这有可能为我省很多钱。

0 个答案:

没有答案