pka*_*mol 5 amazon-web-services aws-cloudformation
我知道可以通过使用条件来有条件地(还有什么?)创建资源。
我试图找到一种方法,尽管可以有条件地创建资源的属性。
在我的情况下,我正在EC2使用默认public ip assignment =的子网中创建多个实例false。
有时,尽管出于调试目的,我还是希望实例获得公共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}
Run Code Online (Sandbox Code Playgroud)
有什么建议么?
小智 11
这可能会有点晚,但是我最近有一个相同的问题。
在AWS文档中,您可以使用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"
Run Code Online (Sandbox Code Playgroud)
AWS :: NoValue表示将不设置NetworkInterfaces属性。
| 归档时间: |
|
| 查看次数: |
2718 次 |
| 最近记录: |