gpt4 book ai didi

amazon-web-services - 暂停 CloudFormation 模板中的资源创建

转载 作者:行者123 更新时间:2023-12-03 07:46:18 25 4
gpt4 key购买 nike

我有一个模板,允许用户定义 S3 存储桶。在同一模板中,我可以选择添加 Lambda 触发器、SQS 触发器和 SNS 触发器。

为了成功创建具有可选触发器的 S3 存储桶,我需要为所选触发器创建策略。

我面临的问题是,有时它有效,有时由于竞争条件而无效。如果Bucket先于策略创建,则Stack创建失败。

我尝试在 S3 Bucket 资源上添加条件 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...

关于amazon-web-services - 暂停 CloudFormation 模板中的资源创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39403823/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com