2015-01-04 13 views
8

In AWS Cloudformation, c'è un modo per dichiarare un'istanza EC2 in VPC con un IP pubblico senza la necessità di dichiarare un IP Elastic ed allegare alla stessa?Come si crea automaticamente un'istanza Ec2 con un IP pubblico ** senza ** che dichiara un IP elastico in cloud?

In AWS :: AutoScaling :: LaunchConfiguration, è possibile aggiungere una proprietà "AssociatePublicIpAddress" per dire che le istanze accetteranno automaticamente un IP pubblico. Sto cercando l'equivalente per AWS :: :: EC2 grado

Di seguito è riportato il mio frammento di cloudformation per la creazione di un'istanza EC2. Non posso alcun documento che menzioni su come aggiungere un IP pubblico senza dover dichiarare preventivamente un IP Elastic.

"MyEc2Instance": { 
    "Type": "AWS::EC2::Instance", 
    "Properties": { 
     "IamInstanceProfile": { 
      "Ref": "MyEc2InstanceProfile" 
     }, 
     "ImageId": { 
      "Fn::FindInMap": [ 
       "MyEc2Box", 
       { 
        "Ref": "Region" 
       }, 
       "ImageId" 
      ] 
     }, 
     "InstanceType": { 
      "Fn::FindInMap": [ 
       "MyEc2Box", 
       { 
        "Ref": "Region" 
       }, 
       "InstanceType" 
      ] 
     }, 
     "KeyName": { 
      "Ref": "DefaultKeyPair" 
     }, 
     "Monitoring": "true", 
     "SecurityGroupIds": [ 
      { 
       "Ref": "MyEc2SecurityGroup" 
      } 
     ], 
     "SubnetId": { 
      "Ref": "MyBoxSubnet" 
     }, 
     "Tags": [ 
      { 
       "Key": "Name", 
       "Value": "MyBox" 
      }, 
     ] 
    } 
}, 
+0

L'IP pubblico viene assegnato automaticamente quando si crea l'istanza di ec2. Non è necessario aggiungerlo manualmente. Hai bisogno di aggiungere inviare IP pubblico? – BMW

+0

C'è un'impostazione nelle impostazioni di sottorete: "Assegna automaticamente IP pubblico" hai provato? – Edwin

+0

Se la risposta è corretta, puoi contrassegnarla come tale per aiutare gli altri a risolvere risposte valide? grazie –

risposta

12

Supponendo che si avvia l'istanza in una sottorete pubblica VPC (vale a dire una sottorete che ha una. Una regola per inviare il traffico al 0.0.0.0/0 al gateway Internet tabella di routing incl), basta definire la proprietà AutoAssignPublicIPAddress nel gruppo NetworkInterfaces della risorsa EC2:

  "NetworkInterfaces" : [{ 
       "AssociatePublicIpAddress" : "True", 
       "DeleteOnTermination" : "True", 
       "SubnetId" : { "Ref" : "PublicSubnet" }, 
       "DeviceIndex" : "0", 
       "GroupSet" : [ { "Ref" : "SecurityGroup" } ] 
      }], 

consultare la documentazione al http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html

Se si avvia l'istanza EC2 in classica rete (non VPC), riceverà automaticamente un indirizzo IP pubblico.

+0

È possibile configurarlo nella sottorete, quindi tutte le istanze EC2 ottengono un IP pubblico per impostazione predefinita? Equivalente alla verifica dell'opzione "Assegna automaticamente IP pubblico" nella configurazione di sottorete, disponibile nell'interfaccia utente della console AWS. –

+0

Non penso sia possibile. L'API per modificare questo valore è ModifySubnetAttribute (http://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifySubnetAttribute.html) e deve essere richiamato su una subnet esistente. Non riesco a trovare un equivalente in CloudFormation, ma mi piacerebbe essere smentito su questo punto :-) –

+0

Questo non ha senso se si hanno più sottoreti in cui l'istanza può essere avviata (ad esempio come parte del ridimensionamento automatico e del caricamento bilanciamento). Ci dovrebbe essere (c'è forse?) Un'impostazione per assegnare semplicemente un IP pubblico all'istanza, senza specificare un'interfaccia di rete? –

3

vedo che questo è un vecchio post, ma vi posto la risposta in ogni caso può essere utile. Nella sottorete è possibile impostare: "MapPublicIpOnLaunch" True così tutto l'istanza di questa sottorete avrà un IP pubblico.

MapPublicIpOnLaunch 

Indicates whether instances that are launched in this subnet receive a public IP address. By default, the value is false. 

Required: No 

Type: Boolean 

Update requires: No interruption. 
+1

Anche se effettivamente impostare il valore predefinito per la subnet IP pubblico su true (che, letteralmente, faceva parte della domanda), sembra che CloudFormation-iniziato casi non aderiscono a questa impostazione, quindi non è utile per avviare un'istanza CF con un ip pubblico – Claude

Problemi correlati