AWS EC2:保留已在运行的实例的公共IP

时间:2014-10-25 09:30:59

标签: amazon-ec2


我有一些我想要删除的机器,但是我希望它们保留它们被分配的公共IP地址,以便下次启动它们时它们将保持在同一地址。 我知道弹性IP地址的概念,但我不想重新分配IP地址,然后重新映射我的环境。
是否可以保留当前的IP地址?



谢谢, 丹尼尔

3 个答案:

答案 0 :(得分:5)

这是不可能的。

  

公共IP地址是从Amazon的公共IP地址池分配给您的实例的,并且与您的AWS账户无关。

     

当公共IP地址与您的实例取消关联时,它会被释放回公共IP地址池,您无法重复使用它。

     

如果您需要可以根据需要与实例关联的持久性公共IP地址,请改用弹性IP地址(EIP)。您可以分配自己的EIP,并将其与您的实例相关联。有关更多信息,请参阅弹性IP地址(EIP)。

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-instance-addressing.html

请注意,弹性IP地址不收取任何费用,除非您将多个弹性IP关联到同一个实例(在这种情况下,只有第一个免费提供)或您将弹性IP添加到您的帐户但留下它们附加到已停止的实例或根本没有实例(例如,供以后重用)或者您重新映射IP(每个IP每月重映射超过100次),但这些费用非常小。

答案 1 :(得分:0)

弹性IP的名称为limitations

如果您在一个区域内已达到最大的弹性IP地址数量,而您想要的只是一种恒定的方式来连接到EC2实例,那么我建议您使用route53记录而不是IP地址。

我创建一个route53记录,该记录指向我的EC2实例的IP地址。停止EC2时,记录不会更改。

使记录指向EC2地址的方法是通过running a script that changes the route53 record when the EC2 launches

这是我的EC2的user data

Content-Type: multipart/mixed; boundary="//"
MIME-Version: 1.0

--//
Content-Type: text/cloud-config; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="cloud-config.txt"

#cloud-config
cloud_final_modules:
- [scripts-user, always]

--//
Content-Type: text/x-shellscript; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="userdata.txt"

#!/bin/bash

# get the public ip address
# Ref: https://stackoverflow.com/questions/38679346/get-public-ip-address-on-current-ec2-instance
export public_ip=$(curl http://169.254.169.254/latest/meta-data/public-ipv4)

cat <<EOF > input.json
{
  "Comment": "optional comment about the changes in this change batch request",
  "Changes": [
    {
      "Action": "UPSERT",
      "ResourceRecordSet": {
        "Name": "my-domain.my-company.com",
        "Type": "A",
        "TTL": 300,
        "ResourceRecords": [
          {
            "Value": "${public_ip}"
          }
        ]
      }
    }
  ]
}
EOF

# change route53 record 
/usr/bin/aws route53 change-resource-record-sets \
  --hosted-zone-id <hosted_zone_of_my-company.con> \
  --change-batch file://input.json >
--//

在这里,我将my-domain.my-company.com用作EC2的route53记录。

通过使用此方法,您将获得一个指向EC2实例的route53记录。停止并启动EC2时,记录不会更改。因此,您始终可以使用route53记录连接到EC2。

请记住为EC2实例分配一个具有route53权限的IAM角色,以便您可以正确运行用户数据。

请记住,我提供的用户数据旨在用于Amazon Linux 2,并且这些命令可能不适用于其他Linux发行版。

答案 2 :(得分:-3)

我不这么认为..如果有可能亚马逊不会通过购买弹性IP地址赚钱......