回答

5

好像有沒有辦法輕鬆地創建一個新的部署,只要您Cloudformation資源的變化之一。

解決此問題的一種方法是使用支持Lambda的自定義資源(請參閱http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-custom-resources.html)。

只有在您的某個資源已更新時,Lambda才應創建新的Deployment。要確定您的資源之一,已被更新,
你可能要實現圍繞這個API調用自定義邏輯:http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_DescribeStackEvents.html

爲了觸發您的自定義資源的更新,我建議你提供一個Cloudformation參數的方式,用於強制更新您的自定義資源(例如當前時間或版本號)。

請注意,您必須將DependsOn子句添加到您的自定義資源中,該子句將包含與您的API相關的所有資源。否則,可能會在更新所有API資源之前創建您的部署。

希望這會有所幫助。

+0

有一定的幫助。 :)亞馬遜建議另一種方式 - 如果感興趣可以分享。 – bjfletcher

+1

@bjfletcher當然想知道! – spg

+1

@bjfletcher也遇到這個問題,你從亞馬遜找到了什麼? –

2

CloudFormation在亞馬遜的話來說就是:

AWS CloudFormation需要配置的關懷和配置這些資源,你 http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html

的API重新部署不部署任務......這是一個促銷活動是軟件發佈過程中的一個階段的一部分。

AWS CodePipeline是一個持續交付服務,您可以使用它來建模,可視化並自動執行發佈軟件所需的步驟。 http://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html

CodePipeline還支持從管道中的Actions執行Lambda函數。因此,如前所述,創建一個Lambda函數來部署您的API,但從Codepipeline而不是CloudFormation中調用它。

詳情請諮詢本頁面: http://docs.aws.amazon.com/codepipeline/latest/userguide/actions-invoke-lambda-function.html

相關問題