2017-03-29 99 views
1

我有一個部署在S3上並可公開訪問的反應應用程序(SPA)。在每次構建之後,我必須手動將上述index.html和其他靜態資產上傳到S3。有什麼方法可以使這個過程自動化嗎?生成後自動將靜態網站文件部署到S3

我做了一個關於CD(連續部署)到S3的詳盡搜索,這裏是大約相同的SO question

我正在彙總來自我詳盡研究的所有信息。我寫了下面的答案,其中包含各種方法來實現這一點。

回答

3

有很多方法可以自動執行S3部署。下面是我收集的東西:

1 AWS SNS和Lambda:

這個過程是非常有用的,如果要觸發GitHub上push.So任何AWS服務,在此過程是:

  1. github push會觸發一條消息給SNS。
  2. 調用了訂閱SNS主題的Lambda。
  3. 在Lambda內部,我克隆了github存儲庫。
  4. 使用AWS的S3 SDK將構建或dist目錄上傳到您的S3存儲桶。這裏是上述方法的高層體系結構:

Automation using SNS & Lambda

這種方法的缺點是克隆大回購需要時間和lambda表達式每秒計費。所以,這對於大型回購可能會變得昂貴。

2.特拉維斯:

特拉維斯以其CI(持續集成)庫。 A .travis.yml對整合過程至關重要。

如果您想在構建之後進行一些測試,然後成功,請將文件上傳到S3。那麼這種方法將是最好的方法。 Travis對開源項目免費。

不利的一面是,我找不到一種方法將目錄與回購站隔離並單獨上傳該特定目錄。

3 AWS CLI:

這是將文件上傳到S3最便宜最好的方式。我用這種方法。我從這個medium post得到了這個信息。

通常在反應Apps中構建腳本NPM或紗線寫爲的package.json腳本觸發。下面是文件上傳到S3命令:

aws s3 sync build/ s3://<bucket-name>

我添加了這個腳本中的package.json構建腳本的一部分。這非常方便,因此可以自動將文件上傳到S3的手動過程。

此答案是基於我的觀點。如果有任何不正確的或如果我錯過了某些東西,請隨時發表評論,我會將其添加到答案中。

+1

同意AWS CLI方法。 Lambda在最多300秒後超時...因此,對於涉及較大資產的網站來說,這也不是最佳選擇。 –