aws-sdk для рубина. Как назначить публичный IP-адрес экземпляру?

Внимательно прочитав документы по ruby ​​aws-sdk, я не вижу способа чтобы связать общедоступный IP-адрес с экземпляром при создании внутри VPC. Я не хочу управлять эластичными IP-адресами, просто использую старый добрый случайный общедоступный IP-адрес.

instance = ec2.instances.create(
  count: 1,
  image_id: IMAGE_ID,
  instance_type: INSTANCE_TYPE,
  key_name: KEYNAME,
  subnet_id: SUBNET_ID,
  security_groups: security_group,
  user_data: USER_DATA
)

Кто-нибудь знает самый простой способ связать публичный адрес при создании экземпляра ec2?

заранее спасибо.


person UKCC    schedule 19.02.2014    source источник


Ответы (2)


С http://docs.aws.amazon.com/AWSRubySDK/latest/AWS/EC2/Client/V20131015.html#run_instances-instance_method, в методе run_instances, в опции :network_interfaces вы можете использовать входной параметр :associate_public_ip_address, чтобы указать назначение общедоступного IP-адреса.

К вашему сведению, вы используете старую версию Ruby SDK. Используйте AWS SDK CORE, так как AWS в настоящее время уделяет больше внимания Core SDK. . Приведенный выше вариант назначения общедоступного IP-адреса в AWS SDK CORE можно найти здесь.

person slayedbylucifer    schedule 20.02.2014

Вот пример кода для запуска экземпляра в облаке VPC с общедоступным IP-адресом с использованием Ruby AWS SDK версии 2.2. Насколько я могу судить, это минимальный объем кода, необходимый для запуска экземпляра, который на самом деле имеет общедоступный IP-адрес. Конечно, все переменные с именем my-something должны быть установлены в первую очередь.

require 'aws-sdk'
@ec2 = Aws::EC2::Resource.new
@ec2.create_instances(dry_run: false,
                      min_count: 1,
                      max_count: 1,
                      image_id: my-image-id,
                      key_name: my-key-name,
                      network_interfaces: [{device_index: 0,
                                            subnet_id: my-subnet-id,
                                            groups: [my-security-group-id],
                                            delete_on_termination: true,
                                            associate_public_ip_address: true}]
person Jacob Gabrielson    schedule 23.03.2016