簡體   English   中英

AWS Cloudformation模板存儲

[英]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服務中存儲模板(和其他代碼)。

這樣做的主要原因和好處是:

  • 與其他AWS服務緊密集成的選項
  • rep事件上的事件觸發器,例如發送SNS通知或觸發Lambda操作的pull請求和提交。
  • 能夠使用IAM策略和角色與開發人員以及其他服務和應用程序共享repo訪問權限。

CodeCommit提供了一種非常精細且安全的方式來分離誰可以做什么,以及哪些應用程序可以訪問repo,因此您可以分割生產和登台環境。

我見過的最佳實踐是將您的模板開發/提交到源代碼存儲庫(通常是Git),然后利用CI工具(如Jenkins,Travis CI,Bamboo等)將這些工具復制到您的帳戶所擁有的S3存儲桶中讀取權限(NOT PUBLIC)。 引用其S3網址中的所有模板,並使用CI工具使這些網址保持最新。

例如, master分支最終到http://bucket-name-here.s3.amazonaws.com/project-name/template.jsondevelop分支結束於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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM