2015-01-04 3 views
8

В облачной информации AWS есть ли способ объявить экземпляр EC2 в VPC с открытым IP-адресом без необходимости объявить Эластичный IP-адрес и прикрепить к нему?Как создать экземпляр Ec2 с открытым IP-адресом автоматически ** без ** объявления Эластичного IP в облачной форме?

В AWS :: AutoScaling :: LaunchConfiguration вы можете добавить свойство «AssociatePublicIpAddress», чтобы сказать, что экземпляры автоматически принимают публичный IP-адрес. Я ищу эквивалент для AWS :: EC2 :: Экземпляр

Ниже приведен фрагмент облаков для создания экземпляра EC2. Я не могу ни одного документа, который упоминает, как добавить публичный IP-адрес, не предварительно объявив Elastic IP.

"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

Публичный IP присваивается автоматически при создании экземпляра ec2. Вам не нужно вручную добавлять его. Вам нужно добавить отправку общедоступного IP-адреса? – BMW

+0

В настройках подсети есть настройка: «Автоматически назначать публичный IP-адрес», вы пробовали это? – Edwin

+0

Должен ли мой ответ быть правильным, можете ли вы пометить его как таковой, чтобы помочь другим разобраться в действительных ответах? спасибо –

ответ

12

Предполагая, что вы начинаете свой экземпляр в публичной подсети VPC (т.е. подсети, которая имеет таблицу маршрутизации, вкл. Правило для отправки трафика 0.0.0.0/0 в Internet Gateway), просто определить AutoAssignPublicIPAddress недвижимость в NetworkInterfaces группе вашего EC2 ресурса:

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

См документации на http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html

Если вы начинаете свой экземпляр в EC2 Классические сети (не VPC), он получит публичный IP-адрес автоматически.

+0

Возможно ли настроить его в подсети, поэтому все экземпляры EC2 получают общедоступный IP-адрес по умолчанию? Эквивалент проверки опции «Автоматически назначать публичный IP» в конфигурации подсети, доступной в пользовательском интерфейсе консоли AWS. –

+0

Не думаю, что это возможно. API для изменения этого значения - ModifySubnetAttribute (http://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifySubnetAttribute.html) и должен быть вызван в существующей подсети. Я не могу найти эквивалент в CloudFormation, но мне бы хотелось, чтобы в этот момент не было доказано :-) –

+0

Это не имеет смысла, если у вас есть несколько подсетей, в которые может быть запущен экземпляр (например, как часть автоматического масштабирования и загрузки балансировка). Должно быть (может быть?) Параметр, чтобы просто автоматически назначить публичный IP-адрес экземпляру без указания сетевого интерфейса? –

3

Я вижу, что это старое сообщение, но я отправляю ответ в любом случае, это может быть полезно. В подсети вы можете установить: «MapPublicIpOnLaunch» в True, поэтому весь экземпляр этой подсети будет иметь общедоступный IP-адрес.

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

Хотя он действительно устанавливает значение по умолчанию для общедоступного IP-адреса подсети (которое в буквальном смысле было частью вопроса), кажется, что экземпляры, запущенные CloudFormation, не соответствуют этому параметру, поэтому это не полезно для запуск экземпляра CF с публичным ip – Claude

Смежные вопросы