【问题标题】:aws-sdk for ruby. How to assign a public ip address with instance?用于红宝石的 aws-sdk。如何为实例分配公共 IP 地址?
【发布时间】:2014-03-19 16:35:30
【问题描述】:

在彻底阅读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 实例时关联公共地址的最简单方法吗?

提前致谢。

【问题讨论】:

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


    【解决方案1】:

    来自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 现在更加关注核心 SDK。在 AWS SDK CORE 中分配公共 IP 地址的选项可以在here 找到。

    【讨论】:

      【解决方案2】:

      下面是一些示例代码,用于使用 Ruby AWS 开发工具包 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}]
      

      【讨论】:

        猜你喜欢
        • 2013-07-03
        • 1970-01-01
        • 1970-01-01
        • 2017-12-08
        • 2021-04-19
        • 2016-12-15
        • 2021-06-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多