gpt4 book ai didi

amazon-web-services - AWS 云信息 : Conditionally create properties of resources

转载 作者:行者123 更新时间:2023-12-04 16:42:07 24 4
gpt4 key购买 nike

我知道可以通过使用Conditions来实现有条件地(还有什么?)创建资源。

我正在尝试找到一种有条件地创建资源属性的方法;

就我而言,我正在子网中创建多个 EC2 实例,默认公共(public) IP 分配 = false

有时,出于调试目的,我希望我的实例获得公共(public) IP。

现在我必须注释掉下面的 SG/Subnet 和 NetworkInterfaces 属性(它们不在一起)

  myEC2:
Type: AWS::EC2::Instance
Metadata:
Comment: My EC2 Instance
AWS::CloudFormation::Init:
config:
commands:
01_provision:
command:
!Sub |
sed -i "s/somestring/${somevar}/" /some/path/
CreationPolicy:
ResourceSignal:
Timeout: PT4M
Properties:
ImageId: !FindInMap [ MyAamiMap, 'myami', amiid ]
InstanceType: "t2.2xlarge"
# SubnetId: !Ref SBNDemo1
# SecurityGroupIds: [!Ref SGInternalDemo]
NetworkInterfaces:
- AssociatePublicIpAddress: "true"
DeviceIndex: "0"
GroupSet:
- Ref: "SGInternalDemo"
SubnetId:
Ref: "SBNDemo1"
UserData:
"Fn::Base64":
!Sub |
#!/bin/bash -xe
# Start cfn-init
/usr/local/bin/cfn-init -s ${AWS::StackId} -r myEC2 --region ${AWS::Region} || echo 'Failed to run cfn-init'
# All done so signal success
/usr/local/bin/cfn-signal -e $? --stack ${AWS::StackId} --resource myEC2 --region ${AWS::Region}

有什么建议吗?

最佳答案

这可能有点晚了,但我最近也有同样的问题。

来自AWS docs ,您可以使用Fn::If来设置相应的属性。

模板将如下所示:

Properties:
ImageId: !FindInMap [ MyAamiMap, 'myami', amiid ]
InstanceType: "t2.2xlarge"
# SubnetId: !Ref SBNDemo1
# SecurityGroupIds: [!Ref SGInternalDemo]
NetworkInterfaces:
!If
- YourCondition
-
AssociatePublicIpAddress: "true"
DeviceIndex: "0"
GroupSet:
- Ref: "SGInternalDemo"
SubnetId:
Ref: "SBNDemo1"
- !Ref "AWS::NoValue"

AWS::NoValue 表示不会设置 NetworkInterfaces 属性。

关于amazon-web-services - AWS 云信息 : Conditionally create properties of resources,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53631992/

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