gpt4 book ai didi

amazon-web-services - DependsOn 上的 AWS 云形成条件

转载 作者:行者123 更新时间:2023-12-02 00:49:31 25 4
gpt4 key购买 nike

我正在编写一个云形成模板,并在我的堆栈中创建资源,这取决于环境。
因此,我检查参数(环境)的值,并基于它创建该资源(条件:ISProduction)。
但是,我的问题是,如果创建了该资源 (MyProductionResource),则另一个资源 (AnotherResource) 将依赖于它,并且需要使用另一个资源 (MyProductionResource) 的输出属性。
代码如下:

Conditions:
ISProduction:
"Fn::Equals":
- !Ref Environment
- production
...

MyProductionResource:
Type: AWS::CloudFormation::Stack
Condition: ISProduction
Properties:
[.. properties..]

AnotherResource:
Type: AWS::CloudFormation::Stack
DependsOn:
- AResource
- MyProductionResource
Properties:
TemplateURL: whatever
Parameters:
AParameter: !GetAtt MyProductionResource.Outputs.SomeString

我的问题是,我希望 AnotherResource 仅当 ISProduction 为 true 时才依赖于 MyProductionResource。一个想法是在 DependsOn 项中添加某种条件,或者任何会带来相同结果的条件。
如何在 AWS Cloud Formation 上执行此操作?
另外,我不确定当dependsOn列表中列出的资源未创建时会发生什么。云形成模板会产生错误吗?如何使此属性读取安全!GetAtt MyProductionResource.Outputs.SomeString ?

最佳答案

您可以使用 !If 作为参数

AParameter: !If [ISProduction, !GetAtt MyProductionResource.Outputs.SomeString, "default value?!?"]

但不幸的是 DependsOn 不允许 Fn::If。

因此您可以创建资源两次。

AnotherProductionResource:
Type: AWS::CloudFormation::Stack
Condition: ISProduction
DependsOn:
- AResource
- MyProductionResource
Properties:
[...]
AnotherNonProductionResource:
Type: AWS::CloudFormation::Stack
Condition: ISNotProduction
DependsOn:
- AResource
Properties:
[...]

但是有这么多的“如果”有点违背了环境应该尽可能相似的想法。那么也许你可以摆脱这整件事?

关于amazon-web-services - DependsOn 上的 AWS 云形成条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41100715/

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