【问题标题】:From AWS API creating a new EC2 instance, how do I get a public ip从 AWS API 创建一个新的 EC2 实例,我如何获得一个公共 ip
【发布时间】:2017-04-04 01:17:50
【问题描述】:

通过 AWS Java API,我正在从头开始构建一个新的 EC2 实例。我可以创建一个新的 VPC、子网和安全组,然后在 RunInstanceRequest 中将它们传递给 API 的 runInstance(),然后我会返回一个正在运行的 EC2 实例。

我还没有弄清楚如何获得分配给这个新 EC2 实例的公共 IP。我浏览了文档,似乎我可以创建 internetGateway,但无法弄清楚如何将它与 VPC 或实例本身关联。

在 RunInstance 对象上,我找到了 .withNetworkInterfaces 方法,该方法确实采用 NetworkInstanceSpecfication,它有一个用于启用公共 id 的标志,但这需要一个 deviceId(int),我不知道如何构建或创建.

有没有人有任何建议或材料也可以指点我,这可以帮助解决我的问题?

我是否需要为此功能创建 NAT、路由表、弹性 ip 等?

【问题讨论】:

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


【解决方案1】:

初学者请学习VPC scenarios

您需要做的是将 internetGateway IGW 放入指定的 VPC 路由表中。

默认情况下,所有新子网Auto-assign Public IP 属性为假。要让您的子网将公有 IP 地址分配给 Ec2 实例,您必须使用 ModifySubnetAttribute 并将 MapPublicIpOnLaunch 设置为 true。

从这里开始,子网中启动的所有 EC2 实例将自动分配公共 IP 地址。

【讨论】:

  • 我重新阅读了该链接,我理解您的评论,我只是不知道如何通过 Java API 从 VPC 到其路由表。我过去曾这样做过,但只是通过网络界面。
  • 使用 API 创建 VPC 布局非常耗时。我建议您研究诸如 Terraform 之类的选项。 AWS 将建议 cloudformation,这是一种高学习曲线选项。
  • 是的,我对时间有了这样的感觉。我很快就会使用 Terraform,我只是想看看我是否可以先通过 API 直接完成,但听起来我应该继续前进,看看其他选项,比如 Terraform。
猜你喜欢
  • 1970-01-01
  • 2023-02-02
  • 2018-01-02
  • 2014-09-21
  • 2018-07-30
  • 1970-01-01
  • 1970-01-01
  • 2019-01-01
  • 1970-01-01
相关资源
最近更新 更多