2017-11-04 43 views
0

我有一個用例,我只想在使用雲形成的測試環境中創建資源。我試圖使用條件來實現這一點,但它失敗了。CloudFormation:僅在特定階段創建資源

Resources: 
    TestClientRole: 
     Type: AWS::IAM::Role 
     Condition: NotProdStage 
     Properties: 
      AssumeRolePolicyDocument: 
      Statement: 
      - Action: <> 
       Effect: Allow 
       <> 
      Version: '2012-10-17' 
      RoleName: 
      "some-test-role" 

它工作在非督促階段罰款,但失敗,「未解決資源依賴[TestClientRole]在模板中的資源塊」

如何使雲的形成忽略資源督促階段?

+0

你是說它適用於非prod,但在** prod **階段顯示該特定錯誤?也就是說,當'NotProdStage'是錯誤的? –

+0

@JohnRotenstein正確 – user401445

+0

我還在資源TestClientRole塊中看到模板的一些問題。你確定這個資源正在創建正確嗎?例如:'AssumeRolePolicyDocument'中缺少'Principal'標籤。傳遞給「Action」的值是錯誤的。 –

回答

2

該錯誤消息表明在您的CloudFormation模板的其他地方存在對TestClientRole的依賴關係。

問題是角色是而不是在Prod環境中創建,但另一個資源是說它依賴於創建的角色。

解決方案:刪除模板中引用TestClientRole的其他地方的依賴關係。

事實上,實際上,需要依賴關係是非常罕見的,因爲CloudFormation根據資源之間的引用計算出正確的構建順序。唯一需要依賴的時間是當你特別希望某件事在另一次啓動之前完成構建時,比如讓應用程序服務器等待數據庫服務器準備就緒。通常情況下,除非你有一個不明顯的特殊需求,否則將它們排除在外。

相關問題