Ho uno stack cfn che (tra le altre cose) crea un VPC, diversi gruppi di sicurezza e una manciata di istanze EC2. È banale assegnare i gruppi di sicurezza creati all'interno dello stack alle istanze create anche dallo stack. Tuttavia, sono interessato al VPC SG predefinito.
Quando viene creato un VPC (sia manualmente che tramite la GUI, tramite cloudformation o qualsiasi altro mezzo), AWS crea un gruppo di sicurezza predefinito con una regola "consenti tutto" per qualsiasi istanza in quel gruppo.
Quello che sto cercando di fare è assegnare questo gruppo di sicurezza predefinito insieme a diversi altri SG alle istanze create dallo stack. Ciò si sta rivelando molto più difficile di quanto mi aspettassi. Ecco alcuni frammenti che mostrano cosa sto succedendo:
"AllowSSHSecGroup":{
"Type":"AWS::EC2::SecurityGroup",
"Properties":{
"GroupDescription":"Allow SSH from anywhere",
"VpcId":{
"Ref":"DevVPC"
},
"SecurityGroupIngress":[
{
"IpProtocol":"tcp",
"FromPort":"22",
"ToPort":"22",
"CidrIp":"0.0.0.0/0"
}
]
}
},
"Instance001" : {
"Type" : "AWS::EC2::Instance",
"Properties" : {
"ImageId" : "ami-7eab224e",
"InstanceType" : "m1.large",
"AvailabilityZone" : "us-west-2a",
"PrivateIpAddress" : "10.22.0.110",
"SecurityGroupIds" : [ {"Ref" : "AllowSSHSecGroup"} ],
"SubnetId" : { "Ref" : "PublicSubnet" },
"KeyName" : "erik-key",
"DisableApiTermination" : "false",
"Tags" : [ { "Key": "Name", "Value": "Instance001"} ]
}
}
Nello snippet precedente, sto creando un gruppo di sicurezza "consenti ssh" e lo assegno a un'istanza. Come accennato, il mio stack crea anche un VPC (in cui viene avviata questa istanza), che a sua volta crea un gruppo di sicurezza predefinito. Sfortunatamente, poiché questo gruppo viene creato automaticamente da AWS, il suo ID gruppo non è disponibile nello stack, rendendo impossibile il riferimento tramite ID. Inizialmente ho pensato che la SecurityGroups
proprietà sarebbe stata un'opzione, in quanto ciò mi avrebbe permesso di fare riferimento al SG predefinito con il suo nome default
,. Ciò non funziona, tuttavia, poiché la SecurityGroups
proprietà è solo per i gruppi di sicurezza EC2, non per i gruppi di sicurezza VPC.
Quindi sono bloccato. Io ho aperto un caso con il supporto di AWS su questo, ma finora, non sono stato utile. Qualche idea su come posso farlo?
SecurityGroupIngress
, facendo riferimento al tuo gruppo di sicurezza predefinito sintetico, puoi ottenere l'auto-riferimento che desideri, in una distribuzione a stack singolo