2016-10-03 27 views
1

時,我有這是CFN模板使用此類創建EC2實例:更新現有的安全組創建新的EC2 CloudFormation

參數:

"VPCId": { 
    "Type": "AWS::EC2::VPC::Id" 
    "Description": "The VPC Id to where this instance is being created" 
} 
"Subnet": { 
    "Description": "Subnet to put Instance", 
    "Type": "AWS::EC2::Subnet::Id", 
}, 

有以下安全組:

"InstanceSecurityGroup": { 
     "Type": "AWS::EC2::SecurityGroup", 
     "Properties": { 
     "GroupDescription": "Enables access to instance by port 80", 
     "VPCId": { 
      "Ref": "VPCId" 
     }, 
     "SecurityGroupIngress": [ 
      { 
      "IpProtocol": "tcp", 
      "FromPort": "80", 
      "ToPort": "80", 
      "CidrIp": { 
       "Ref": "ClientCIDR" 
      } 
      } 
     ] 
     }, 

並且實例資源的一部分:

"WebServer": { 
    "Type": "AWS::EC2::Instance", 
    "Properties": { 
    "IamInstanceProfile": "access-profile", 
    "SecurityGroupIds": [ 
     { "Fn::GetAtt": [ 
      "InstanceSecurityGroup", 
      "GroupId" 
     ] 
     } 
    ], 
    "SubnetId": { 
     "Ref": "Subnet" 
    }, 

我想使用另一個模板創建另外幾個實例。這個實例應該可以通過端口22訪問上面的實例,並在UserData中連接到它。

我不知道它是如何組織的,我看到的一種方法是在建立到第一個實例的ssh連接之前,通過UserData使用aws cli更新安全組。如何使用資源進行組織?我沒有找到任何有關這方面的信息或例子。請幫忙!謝謝!

+1

您是否可以爲需要打開端口22的實例創建第二個安全組? – jbird

+0

當我使用第二個模板創建實例時,它們每次都有隨機的公用IP。所以,我應該能夠以某種方式更新WebServer實例的規則 – BigBoss

+0

啊,我明白了。西蒙 - 皮埃爾的回答如下。安全組可以引用其他安全組。 – jbird

回答

2

您可以修改InstanceSecurityGroup允許從其它實例訪問:

"InstanceSecurityGroup": { 
    "Type": "AWS::EC2::SecurityGroup", 
    "Properties": { 
    "GroupDescription": "Enables access to instance by port 80", 
    "VPCId": { 
     "Ref": "VPCId" 
    }, 
    "SecurityGroupIngress": [ 
     { 
     "IpProtocol": "tcp", 
     "FromPort": "80", 
     "ToPort": "80", 
     "CidrIp": { 
      "Ref": "ClientCIDR" 
     } 
     }, 
     { 
     "IpProtocol": "tcp", 
     "FromPort": "22", 
     "ToPort": "22", 
     "SourceSecurityGroupId": { 
      "Ref": "OtherInstancesSecurityGroup" 
     } 
     } 
    ] 
    }, 

其中OtherInstancesSecurityGroup是一個新的安全組,你會指定的其他實例。

+0

讓我們試着再次解釋.... 我已經使用我提供的模板創建了帶有InstanceSecurityGroup的WebServer實例。這臺服務器是永久的。並應允許通過特定的IP連接。 然後,我採取另一個模板,並希望創建另一個實例。在設置期間,需要自動更新InstanceSecurityGroup以允許通過端口22從IP分配給該第二實例的該實例連接。 – BigBoss

+1

使用我的答案中的策略,您不需要指定允許在端口22上與服務器通信的IP地址。SourceSecurityGroupId將允許具有此安全組的任何實例在端口22上訪問您的服務器,無論其IP地址如何。請參閱http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group-ingress.html#cfn-ec2-security-group-ingress-sourcesecuritygroupid – spg

+0

我應該指定什麼另一個模板,因爲他們有自己的SecurityGroups?感謝您的幫助 – BigBoss

相關問題