2015-01-12 33 views
0

我有一個正在運行PHP網站的EC2實例,我也使用AWS的擴展策略,這意味着當滿足某些條件時會生成一個新實例。使用更新代碼來縮放EC2實例

問題是AMI生成了舊的AMI代碼。

假設我用AMI X創建了instance1。現在我更新instance1上的代碼。現在,當生成一個新實例時,它將使用AMI X代碼創建,而不是我所做的更新。

除了每次手動更新AMI外,當前場景的解決方案是什麼?

回答

0

亞馬遜機器映像(AMI)是磁盤映像的只讀副本,將用於啓動新的Amazon EC2實例。從AMI啓動的任何新實例都將具有完全相同的引導磁盤。

如果更新實例上的代碼,這是正確的,這不會影響底層的AMI。從同一AMI開始的任何未來實例都不會有更新後的代碼,因爲這些更改不會影響AMI。

有幾個選項,如果你想將來的實例已經更新代碼:

  • 更新的代碼,然後創建一個新的AMI。從新的AMI啓動未來的實例。
  • 在用戶數據字段中使用啓動腳本從中央存儲庫下載代碼。這樣,代碼實際上並不存儲在AMI上。每次啓動實例時都可以重新下載它。
  • 使用配置管理實用程序(如Puppet或Chef)配置您的系統,從中央存儲庫中提取代碼。

關鍵是自動化您的流程,以便在您希望推出更新時不需要手動介入。

+0

你有任何現成的腳本的例子,因爲我不知道用戶數據字段。 – Badddy

+0

該腳本可以做任何你想做的事情。最簡單的方法是從S3中下載一個zip文件並解壓縮,然後執行它。用戶數據文檔:http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html –