2015-01-04 4 views
8

Gibt es in AWS Cloudformation eine Möglichkeit, eine EC2-Instanz in VPC mit einer öffentlichen IP ohne zu deklarieren, eine Elastic IP zu deklarieren und anzuhängen?Wie erstelle ich automatisch eine Ec2-Instanz mit einer öffentlichen IP-Adresse ** ohne ** eine elastische IP in der Cloud-Konfiguration zu deklarieren?

In AWS :: AutoScaling :: LaunchConfiguration können Sie eine Eigenschaft "AssociatePublicIpAddress" hinzufügen, um anzugeben, dass die Instanzen automatisch eine öffentliche IP-Adresse akzeptieren. Ich suche nach dem Äquivalent für AWS :: EC2 :: Instanz

Unten ist mein Cloud-Bildung-Snippet zum Erstellen einer EC2-Instanz. Ich kann kein Dokument nennen, das erwähnt, wie man eine öffentliche IP hinzufügt, ohne zuvor eine Elastic IP deklarieren zu müssen.

"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

Die öffentliche IP-Adresse wird beim Erstellen der ec2-Instanz automatisch zugewiesen. Sie müssen es nicht manuell hinzufügen. Müssen Sie hinzufügen öffentliche IP senden? – BMW

+0

Es gibt eine Einstellung in den Subnetzeinstellungen: "Öffentliche IP-Adresse automatisch zuweisen" hast du das versucht? – Edwin

+0

Sollte meine Antwort die richtige sein, können Sie sie als solche markieren, um anderen zu helfen, gültige Antworten auszusortieren? danke –

Antwort

12

Angenommen, Sie Ihre Instanz in einem VPC öffentlichen Subnetz beginnen (dh ein Subnetz, das eine Routing-Tabelle inkl hat. Regel Verkehr 0.0.0.0/0 zum Internet-Gateway senden), definiert nur AutoAssignPublicIPAddress Eigenschaft in der Netzwerkschnitt Gruppe Ihrer EC2-Ressource:

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

Siehe Dokumentation http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html

Wenn Sie Ihre Instanz in EC2-Klassiker starten Vernetzung (nicht VPC), wird es eine öffentliche IP-Adresse automatisch erhalten.

+0

Ist es möglich, es im Subnetz zu konfigurieren, so dass alle EC2-Instanzen standardmäßig eine öffentliche IP bekommen? Entspricht der Option "Öffentliche IP-Adresse automatisch zuweisen" in der Subnetzkonfiguration, die in der Benutzeroberfläche der AWS-Konsole verfügbar ist. –

+0

Ich glaube nicht, dass es möglich ist. Die API zum Ändern dieses Werts ist ModifySubnetAttribute (http://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifySubnetAttribute.html) und muss in einem vorhandenen Subnetz aufgerufen werden. Ich finde keine Entsprechung in CloudFormation, aber ich würde gerne in diesem Punkt falsch bewiesen werden :-) –

+0

Dies macht keinen Sinn, wenn Sie mehrere Subnetze haben, in die die Instanz gestartet werden kann (zum Beispiel als Teil der automatischen Skalierung und Laden ausgleichend). Es sollte (gibt es vielleicht?) Eine Einstellung geben, um der Instanz automatisch eine öffentliche IP zuzuweisen, ohne eine Netzwerkschnittstelle anzugeben? –

3

Ich sehe, dass dies ein alter Beitrag ist, aber ich poste die Antwort trotzdem kann es hilfreich sein. Im Subnetz können Sie "MapPublicIpOnLaunch" auf "True" setzen, damit alle Instanzen dieses Subnetzes eine öffentliche IP-Adresse haben.

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

Obwohl es tatsächlich den Standardwert für die öffentliche IP-Adresse des Subnetzes auf true setzt (was wörtlich Teil der Frage war), scheint es so zu sein, dass CloudFormation-gestartete Instanzen diese Einstellung nicht einhalten Starten einer CF-Instanz mit einer öffentlichen IP-Adresse – Claude