[英]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.