[英]AWS Cloudformation template storage
我們目前有許多資源部署到AWS dev和prod帳戶。 這些包括lambda函數,kinesis流,dynamo db表和RDS實例。 其中一些資源使用我們的ci工具和cloudformation進行部署,有些是手動完成的。 出於多種原因,我們希望在cloudformation中定義所有內容。 大多數資源都是較大系統或堆棧的一部分。 即連接到lambda函數的api網關,該函數可能消耗由另一個lambda函數填充的kinesis流。 問題是,在這種情況下,雲形態模板應該存在於何處? 在第一個lambda的回購? 第二個lambda? 中央雲信息倉庫或其他地方?
將模板存儲在任何源代碼控制中是一個很好的開始,可以獲得集中和版本化代碼的好處。
但是 ,如果您主要在AWS雲中投資自動化,則應考慮在AWS CodeCommit git服務中存儲模板(和其他代碼)。
這樣做的主要原因和好處是:
CodeCommit提供了一種非常精細且安全的方式來分離誰可以做什么,以及哪些應用程序可以訪問repo,因此您可以分割生產和登台環境。
我見過的最佳實踐是將您的模板開發/提交到源代碼存儲庫(通常是Git),然后利用CI工具(如Jenkins,Travis CI,Bamboo等)將這些工具復制到您的帳戶所擁有的S3存儲桶中讀取權限(NOT PUBLIC)。 引用其S3網址中的所有模板,並使用CI工具使這些網址保持最新。
例如, master
分支最終到http://bucket-name-here.s3.amazonaws.com/project-name/template.json
並develop
分支結束於http://bucket-name-here.s3.amazonaws.com/project-name/template-develop.json
。 您可以擴展功能/發布分支以遵循http://bucket-name-here.s3.amazonaws.com/project-name/template-release-v1.0.json
或類似內容。
當您在其他資源中引用這些內容時,您將始終違反所需的任何代碼級別(引用template.json
作為生產級代碼)。
我們在GitLab中擁有大量Jenkins CI / CD環境的所有源代碼。 並考慮添加管道步驟以觸發AWS CodeCommit + CodePipeline從專用GitLab repos拉出以亞馬遜專用方式執行CloudFormation模板,並帶來所有好處。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.