簡體   English   中英

暫停CloudFormation模板中的資源創建

[英]Pause resource creation in CloudFormation template

我有一個模板,允許用戶定義S3存儲桶。 在同一模板中,我具有添加Lambda觸發器,SQS觸發器和SNS觸發器的選項。

為了成功創建帶有可選觸發器的S3存儲桶,我需要為所選觸發器創建策略。

我面臨的問題是,有時它可以工作,有時又不是由於比賽條件而引起的。 如果在策略之前創建存儲桶,則堆棧創建失敗。

我試圖在S3存儲桶資源上添加條件DependsOn屬性,但是DependsOn僅接受字符串。

這是我的DependsOn屬性的樣子:

"S3Bucket": {
    "Type": "AWS::S3::Bucket",
    "DependsOn": [{
        "Fn::If": ["DoCreateQueueTrigger",
        "SQSMessagePermission",
        ""]
    }],

}

我唯一想到的就是在達到存儲桶創建之前暫停模板執行。

有辦法嗎?

您可以通過聲明兩個同名的互為條件資源來完成此操作:一個聲明可選觸發器,另一個聲明為“空資源”,當實際未創建實際資源時,該“空資源”僅接受DependsOn聲明:

Conditions:
  DoCreateTrigger: !Equals [!Ref CreateTrigger, true]
  NotCreateTrigger: !Not [!Equals [!Ref CreateTrigger, true]]
Resources:
  SQSMessagePermission:
    Condition: NotCreateTrigger
    Type: AWS::CloudFormation::WaitConditionHandle
  SQSMessagePermission:
    Condition: DoCreateTrigger
    Type: AWS::SQS::QueuePolicy
    Properties:
      # ...etc...
  S3Bucket:
    Type: AWS::S3::Bucket
    DependsOn: [SQSMessagePermission]
    Properties:
      # ...etc...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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