首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查停止的亚马逊网络服务EC2实例是否会获得带有boto3的公网IP

检查停止的亚马逊网络服务EC2实例是否会获得带有boto3的公网IP
EN

Stack Overflow用户
提问于 2021-01-29 03:24:50
回答 2查看 89关注 0票数 3

如果EC2实例已经设置为获取公网IP (非弹性IP),并且当前处于停机状态,那么在启动时可以通过什么来查看它是否会获取到公网IP?让我们假设它所在的子网没有设置,为所有实例提供公网IP。当实例运行时,当我使用client.describe_instances()检索实例时,我可以看到公共IP信息,但是当它停止时,我看不到任何东西。谢谢。

EN

回答 2

Stack Overflow用户

发布于 2021-01-29 05:04:57

在阅读了大量文档后,我得出结论,通过API公开的信息不能可靠地完成这项工作。answer by John介绍了决定EC2实例是否会在第一次引导时分配公网IP的因素的重要细节。

根据这些信息,可以确定新启动的EC2实例是否将获得公共IP,该IP实际上由AssociatePublicIpAddress参数控制。这可以在启动实例时显式设置(请参阅doc1 - Example 5doc2),并且将有一个默认值,该值取决于实例在其中启动的子网。

如果实例在MapPublicIPOnLaunch设置为true的子网中启动,则默认为true;如果MapPublicIPOnLaunch设置为false,则默认为false。但是,您可以覆盖此默认值。

假设公网IP关联的信息保留在弹性网卡上,如果docs可信的话(重点是我的)。

创建网络接口时,它会从子网继承公共IPv4寻址属性。如果稍后修改子网的公共IPv4寻址属性,则网络接口将保留创建时的有效设置。如果启动实例并将现有网络接口指定为主网络接口,则公共IPv4地址属性将由此网络接口确定。

不幸的是,似乎没有任何应用程序接口公开这个内部标志的值--无论是DescribeInstances还是DescribeNetworkInterfaces API调用都不会在响应中包含它。

因此,您可以根据实例所在的子网进行有根据的猜测,但无论如何,这仍然是一种猜测,因为只有在AssociatePublicIpAddress的默认设置没有更改的情况下,这才能起作用。确定可靠的唯一方法是打开实例,到其上的DescribeInstances,并检查它是否收到了公网IP。

票数 2
EN

Stack Overflow用户

发布于 2021-01-29 04:25:18

为实例分配公网IP地址有3种方式:

  • 为实例分配弹性IP地址,或
  • 在网卡上将AssociatePublicIpAddress设置为True启动实例,或
  • 子网将MapPublicIpOnLaunch设置为True

要了解子网是否会自动附加公有IP地址,请调用DescribeSubnets()并检查MapPublicIpOnLaunch属性。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65943916

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档