在彻底阅读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实例创建时关联公共地址的最简单方法吗?
提前感谢。
答案 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}]