用于红宝石的aws-sdk。如何使用实例分配公共IP地址?

时间:2014-02-19 11:18:28

标签: ruby amazon-web-services amazon-ec2 aws-sdk

在彻底阅读ruby aws-sdk docs之后,我没有看到在VPC内部创建时将公共IP地址与实例关联的方法。我不想管理弹性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实例创建时关联公共地址的最简单方法吗?

提前感谢。

2 个答案:

答案 0 :(得分:3)

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。在AWS SDK CORE中分配公共IP地址的上述选项可以在here找到。

答案 1 :(得分:1)

以下是使用Ruby AWS SDK 2.2版在具有公共IP地址的VPC中启动实例的示例代码。据我所知,这是启动实际拥有公共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}]