2017-09-19 49 views
0

嗨Stackoverflow社區,我有一個關於使用Docker與AWS EC2的問題。我對EC2感到滿意,但對Docker來說我很新。我的代碼在Python 3.6,並希望自動執行以下過程:啓動與Docker的EC2,運行腳本並關閉

1:先從泊塢(存儲在ECR泊塢圖像)

2 EC2實例:運行一個一次性處理,並返回結果(讓我們稱之爲 「T」)是一個CSV格式

3:在AWS S3商店 「T」

4:關閉EC2

之所以使用EC2實例是因爲該過程是相當計算密集並且不適合我的本地c動態數值。 Docker的原因是爲了確保整個團隊和CI設施(目前使用circle.ci)的開發環境相同。我瞭解與AWS的交互主要可以使用Boto3完成。

我一直在閱讀關於AWS自己的ECS,我感覺它更傾向於使用Docker部署Web應用程序,而不是運行一次性過程。但是,當我搜索EC2 + Docker的時候,沒有任何其他的ECS出現了。我也在AWS中完成了這個教程,但沒有多大幫助。

我也考慮過使用shell腳本運行EC2(即下載docker,拉圖像,構建容器等),但感覺有點不好意思?因此,我在這裏的問題是:

1:在他的情況下,ECS真的是最合適的解決方案嗎? (或換句話說就是ECS爲這些操作設計的?)

2:如果有的話,是否有人使用ECS設置和運行一次性過程的示例? (我發現設置真的很混亂,尤其是使用的術語)

3:有什麼其他的替代品(如果有的話)?

非常感謝您的幫助!

回答

0

不知道更多關於您的過程;我想爲你提供兩種選擇。

  1. 使用LAMBDA

待你的過程是如何計算密集型的,這可能不是一個可行的選擇。但是,如果可以分發的東西,Lambda是非常棒的。您可以找到有關資源限制here的更多信息。這條路線,你只需編寫Python 3.6代碼來執行你的任務,並寫入「T」給S3。

  • 使用數據管道
  • 隨着Data Pipeline,你可以建立一個自定義的AMI(EC2),並使用它作爲你的形象。然後,您可以指定運行此過程所需的EC2 resource的大小。這聽起來像你的過程會很簡單。根據需要

    • EC2resource
      • 指定AMI,角色,安全組,實例類型等
    • ShellActivity
      • 引導EC2實例:你需要定義
      • 抓取你的代碼表S3,GitHub等
      • 執行代碼

    (在你的代碼編寫「T」到S3包括)您還可以安排在流水線的間隔/調度運行,或者直接從boto3調用它。

    相關問題