Amazon web services 是否将另一个IP重新关联到正在运行的实例?

Amazon web services 是否将另一个IP重新关联到正在运行的实例?,amazon-web-services,amazon-ec2,Amazon Web Services,Amazon Ec2,我有一个复杂的用例, 但简而言之,当一个实例正在运行时,我可以将弹性IP切换到另一个吗?在解关联和重新关联之间的这个时间间隔内会发生什么[可能是10-30分钟]。。难道它不能通过互联网进行交流吗 编辑: 到目前为止答案很好,但这回答了问题的第二部分,主要问题是,如何在IP运行时更改IP?弹性IP使用NAT分配。您的实例有一个与弹性IP相连接的内部IP。虽然实例没有关联的弹性IP,但它将拥有来自池的任意IP,因此,如果访问规则配置正确,它仍然能够与internet通信。弹性IP是使用NAT分配的。

我有一个复杂的用例, 但简而言之,当一个实例正在运行时,我可以将弹性IP切换到另一个吗?在解关联和重新关联之间的这个时间间隔内会发生什么[可能是10-30分钟]。。难道它不能通过互联网进行交流吗

编辑:
到目前为止答案很好,但这回答了问题的第二部分,主要问题是,如何在IP运行时更改IP?

弹性IP使用NAT分配。您的实例有一个与弹性IP相连接的内部IP。虽然实例没有关联的弹性IP,但它将拥有来自池的任意IP,因此,如果访问规则配置正确,它仍然能够与internet通信。

弹性IP是使用NAT分配的。您的实例有一个与弹性IP相连接的内部IP。虽然实例没有关联的弹性IP,但它将具有来自池的任意IP,因此,如果访问规则配置正确,它仍然能够与internet通信。

您可以始终使用公共DNS名称访问系统。 通过互联网交流没有问题

从实例中执行卷曲以了解要使用的私有/公共地址

http://169。254169254/最新/元数据/本地ipv4

http://169。254169254/最新/元数据/公共ipv4


请参阅:

您可以始终使用公共DNS名称访问系统。 通过互联网交流没有问题

从实例中执行卷曲以了解要使用的私有/公共地址

http://169。254169254/最新/元数据/本地ipv4

http://169。254169254/最新/元数据/公共ipv4


请参阅:

是:您可以更改正在运行的实例的IP地址。只需将第二个弹性IP地址与实例关联,它将替换现有的弹性IP地址。

是:您可以更改正在运行的实例的IP地址。只需将第二个弹性IP地址与实例关联,它将替换现有的弹性IP地址。

您的所有问题都或多或少地在中解决,例如:

当一个实例正在运行时,我可以将弹性IP切换到另一个吗? 当然,这是弹性IP地址的主要用例之一: 与标准EC2公共IP地址不同,弹性IP地址分配给帐户,并且可以在需要时重新映射到其他实例 渴望的[这包括正在运行的实例,请参阅下面如何更改正在运行的EC2实例的弹性IP地址。] 在解除关联和重新关联之间的这段时间间隔内[可能是10-30分钟]会发生什么? 这比广告要长,请参见常见问题解答多长时间 需要重新映射弹性IP地址吗?: 在大多数情况下,这 通常需要不到几分钟的时间 重新映射弹性IP,我们将继续努力实现这一点 甚至更快。[实际上,我还没有经历过这个过程 超过一分钟] 难道它不能通过互联网进行交流吗? 这取决于当前的场景,但作为一种简化,您可能应该根据以下两个常见问题解答使用此假设:

如果从实例中删除弹性IP,那么该实例是否可以从internet访问

从实例中移除弹性IP会暂时保留 没有公共IP地址的实例。中的后台进程 短时间后,云将为实例重新分配一个新的公共IP 一段时间。实例将保持可从中访问 在此过程中,云将在其私有IP地址上运行

为什么在我将一个新的IP地址关联到一个实例之后,现有的连接仍然可以工作

当您将弹性IP重新映射到一个实例时,您先前存在的 与旧的和现在未映射的IP地址的通信将继续 即使在重拍之后也要工作。例如,如果您有一个开放的ssh 通过系统分配的公共IP地址连接到实例 然后将一个弹性IP地址与该地址关联 例如,ssh会话可能会继续正常工作 一些时间。这种行为是预期的,但不可靠。我们强烈敦促 您需要通过重新映射到的新IP地址重新建立连接 确保您的软件功能正常

如何更改正在运行的EC2实例的弹性IP地址 上述指南中也包含/暗示了您后续问题的答案,但在第章,特别是第节和第节中有更详细的说明:

基本上,这是通过EC2 API操作来执行的,具体来说,EC2 API操作是由或来实现的,如前面几节所述。
有关主题的更多详情,请参阅EC2。

您的所有问题都或多或少在中提到,例如:

实例运行时,是否可以切换弹性IP 去另一个? 当然,这是弹性IP地址的主要用例之一: 与标准EC2公共IP地址不同,弹性IP地址分配给帐户,并且可以在需要时重新映射到其他实例 渴望的[这包括正在运行的实例,请参阅下面如何更改正在运行的EC2实例的弹性IP地址。] 在解除关联和重新关联之间的这段时间间隔内[可能是10-30分钟]会发生什么? 这比广告要长,请参见常见问题解答多长时间 需要重新映射弹性IP地址吗?: 在大多数情况下,这 通常需要不到几分钟的时间 重新映射弹性IP,我们将继续努力实现这一点 甚至更快。[实际上,我还没有经历过这个过程 超过一分钟] 难道它不能通过互联网进行交流吗? 这取决于当前的场景,但作为一种简化,您可能应该根据以下两个常见问题解答使用此假设:

如果从实例中删除弹性IP,那么该实例是否可以从internet访问

从实例中移除弹性IP会暂时保留 没有公共IP地址的实例。中的后台进程 短时间后,云将为实例重新分配一个新的公共IP 一段时间。实例将保持可从中访问 在此过程中,云将在其私有IP地址上运行

为什么在我将一个新的IP地址关联到一个实例之后,现有的连接仍然可以工作

当您将弹性IP重新映射到一个实例时,您先前存在的 与旧的和现在未映射的IP地址的通信将继续 即使在重拍之后也要工作。例如,如果您有一个开放的ssh 通过系统分配的公共IP地址连接到实例 然后将一个弹性IP地址与该地址关联 例如,ssh会话可能会继续正常工作 一些时间。这种行为是预期的,但不可靠。我们强烈敦促 您需要通过重新映射到的新IP地址重新建立连接 确保您的软件功能正常

如何更改正在运行的EC2实例的弹性IP地址 上述指南中也包含/暗示了您后续问题的答案,但在第章,特别是第节和第节中有更详细的说明:

基本上,这是通过EC2 API操作来执行的,具体来说,EC2 API操作是由或来实现的,如前面几节所述。
请参阅EC2以了解有关主题的更多详细信息。

我创建此bash脚本是为了更改VPC中正在运行的实例的公共ip eip。您只需提供为该实例标记name=指定的名称,这样它就会将名称标记转换为实例ID。更改公共DNS总是需要时间。在aws gui中更改EIP地址很烦人。分离旧ip,获取新ip,关联新ip,释放旧ip。鼠标咔嗒声很臭

#change vpc instance public IP address (EIP -> NIC|INSTANCE)
#usage "changeip [instance friendly tag=Name] [region]"
#example "changeip my.instnace us-west-1"
#dafault region is us-west-1 (you must include --region for $region default)
#for VPC instances only
function changeip {
    if [[ ! $1 ]]; then
        echo 'Error : You must provide tag name for instance'
        echo 'Example:  changeip [friendly name]'
        return
    fi
    if [[ $2 ]]; then
        region='--region '$2
        echo 'Using region '$2
    else
        region='--region us-west-1' #sets default region
        echo 'Using default '$region
    fi  
    name=$1
    instance=$(ec2-describe-instances $region | grep Name | grep $name | cut -f3)
    if [[ ! $instance =~ ^('i-'[A-Za-z0-9]*)$ ]]; then
        echo 'Error : Getting the instance id'
        echo $instance
        return
    fi
    echo 'Applying to '$1 '=> '$instance
    echo 'Please wait....'
    ip_new=$(ec2-allocate-address $region -d vpc | cut -f2)
    if [[ ! $ip_new =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then
        echo 'Error : Getting a new IP address'
        echo $ip_new
        return
    fi
    new_idas=$(ec2-describe-addresses $region $ip_new | cut -f 5) >> /dev/null
    if [[ ! $new_idas =~ ^('eipalloc-'[A-Za-z0-9]*)$ ]]; then
        echo 'Error : Getting New IP allocation id eipalloc'
        echo $new_idas
        return  
    fi
    ip_old=$(ec2-describe-addresses $region | grep $instance | cut -f2)
    if [[ ! $ip_old =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then
        echo 'Error : Getting old IP address'
        echo $ip_old
        return
    fi
    id_dis=$(ec2-describe-addresses $region $ip_old | cut -f 6)
    if [[ ! $id_dis  =~ ^('eipassoc-'[A-Za-z0-9]*)$ ]]; then
        echo 'Error : Dissasociating Old IP'
        echo $id_dis
        return
    fi
    id_release=$(ec2-describe-addresses $region $ip_old | cut -f 5) >> /dev/null
    if [[ ! $new_idas =~ ^('eipalloc-'[A-Za-z0-9]*)$ ]]; then
        echo 'Error : Release Old IP'
        echo $id_release
        return
    fi
    ec2-disassociate-address $region -a $id_dis  >> /dev/null
    sleep 8
    ec2-release-address $region -a $id_release >> /dev/null
    ec2-associate-address $region -i $instance -a $new_idas >> /dev/null
    echo 'SUCCESS!'
    echo 'Old = '$ip_old
    echo 'New = '$ip_new
}

我创建这个bash脚本是为了更改VPC中正在运行的实例的公共ip eip。您只需提供为该实例标记name=指定的名称,这样它就会将名称标记转换为实例ID。更改公共DNS总是需要时间。在aws gui中更改EIP地址很烦人。分离旧ip,获取新ip,关联新ip,释放旧ip。鼠标咔嗒声很臭

#change vpc instance public IP address (EIP -> NIC|INSTANCE)
#usage "changeip [instance friendly tag=Name] [region]"
#example "changeip my.instnace us-west-1"
#dafault region is us-west-1 (you must include --region for $region default)
#for VPC instances only
function changeip {
    if [[ ! $1 ]]; then
        echo 'Error : You must provide tag name for instance'
        echo 'Example:  changeip [friendly name]'
        return
    fi
    if [[ $2 ]]; then
        region='--region '$2
        echo 'Using region '$2
    else
        region='--region us-west-1' #sets default region
        echo 'Using default '$region
    fi  
    name=$1
    instance=$(ec2-describe-instances $region | grep Name | grep $name | cut -f3)
    if [[ ! $instance =~ ^('i-'[A-Za-z0-9]*)$ ]]; then
        echo 'Error : Getting the instance id'
        echo $instance
        return
    fi
    echo 'Applying to '$1 '=> '$instance
    echo 'Please wait....'
    ip_new=$(ec2-allocate-address $region -d vpc | cut -f2)
    if [[ ! $ip_new =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then
        echo 'Error : Getting a new IP address'
        echo $ip_new
        return
    fi
    new_idas=$(ec2-describe-addresses $region $ip_new | cut -f 5) >> /dev/null
    if [[ ! $new_idas =~ ^('eipalloc-'[A-Za-z0-9]*)$ ]]; then
        echo 'Error : Getting New IP allocation id eipalloc'
        echo $new_idas
        return  
    fi
    ip_old=$(ec2-describe-addresses $region | grep $instance | cut -f2)
    if [[ ! $ip_old =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then
        echo 'Error : Getting old IP address'
        echo $ip_old
        return
    fi
    id_dis=$(ec2-describe-addresses $region $ip_old | cut -f 6)
    if [[ ! $id_dis  =~ ^('eipassoc-'[A-Za-z0-9]*)$ ]]; then
        echo 'Error : Dissasociating Old IP'
        echo $id_dis
        return
    fi
    id_release=$(ec2-describe-addresses $region $ip_old | cut -f 5) >> /dev/null
    if [[ ! $new_idas =~ ^('eipalloc-'[A-Za-z0-9]*)$ ]]; then
        echo 'Error : Release Old IP'
        echo $id_release
        return
    fi
    ec2-disassociate-address $region -a $id_dis  >> /dev/null
    sleep 8
    ec2-release-address $region -a $id_release >> /dev/null
    ec2-associate-address $region -i $instance -a $new_idas >> /dev/null
    echo 'SUCCESS!'
    echo 'Old = '$ip_old
    echo 'New = '$ip_new
}

但是,您知道如何在实例运行时更改IP吗?您可以对正在运行的实例使用弹性IP地址,但您知道如何在实例运行时更改IP吗?您可以对正在运行的实例使用弹性IP地址切换IP现在对我来说最重要的是你有什么线索吗?切换IP是我现在最重要的事情你有线索吗?是的,这只适用于vpc实例。常规实例需要重新启动才能获得另一个EIP.O yah,这仅适用于vpc实例。需要重新启动常规实例才能获得另一个EIP。