2012-05-11 310 views
6

我有一個腳本,每天需要運行一次,需要大量內存。我想在專門的亞馬遜盒子上運行它。在AWS服務器上運行腳本

是否有一些自動化的方式來構建一個盒子,下載所有必需的軟件(如紅寶石),然後運行我的腳本。腳本運行後,我想關閉該框。

我能想到的兩個選項是:

  1. 我想黑客EMR做到這一點。 (我的腳本是映射到空目錄的映射器)
  2. 廚師 - 對於一個簡單的腳本,這看起來太多了。
+0

你更喜歡什麼Linux發行版? –

+1

我通常選擇Ubuntu,但我對其他人開放。 – Tihom

回答

9

您可以在啓動時使用官方的Ubuntu AMI,官方的Amazon Linux AMI以及任何其他支持用戶數據腳本概念的AMI來完成一個新的EC2實例。

創建一個腳本(bash中,Perl,Python和

  1. 等等),以#開始!
  2. 運行EC2實例時,將此腳本作爲用戶數據傳遞。
  3. 該腳本將在第一次啓動時自動以root身份運行。

這裏就是我介紹了一個用戶數據腳本的概念的文章:

自動化EC2實例安裝與用戶數據的腳本
http://alestic.com/2009/06/ec2-user-data-scripts

您的用戶數據腳本可以安裝所需的軟件,進行配置,安裝工作腳本,並設置每天運行一次工作腳本的cron作業。

增強:

如果安裝腳本並不需要很長的時間來運行(例如,一個小時或幾下),那麼你甚至不必運行單個專用實例24小時天。您可以改爲使用一種讓AWS可以定期爲您啓動實例的方法。

這裏有一個文章,我寫了提供這種方法與樣本命令的詳細信息:

一個重複計劃運行的EC2實例與自動縮放
http://alestic.com/2011/11/ec2-schedule-instance

的一般方法是使用Auto Scaling可定期使用用戶數據腳本啓動實例。您的工作完成後將終止實例。他們的關鍵是暫停Auto Scaling正常的重新啓動終止實例的願望,以便您在下次開始工作時不需要爲正在運行的實例付費。

+0

有趣。我可以將多個文件傳遞給實例嗎?我想傳遞3個文件:A)Boostrap(安裝所需的軟件)B)配置C)運行的腳本 – Tihom

+0

將它們合併成一個腳本。或者,傳入一個用戶數據腳本,該腳本從S3等安全的地方下載並運行每個單獨的腳本,並通過身份驗證的URL。 –

+1

不錯的Eric。這正是我需要的。 –

相關問題