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

Amazon ec2 AWS EC2:保留已运行实例的公共IP,amazon-ec2,Amazon Ec2,我准备了一些机器,我想取下它们,但我希望它们保留分配给它们的公共IP地址,以便下次我启动它们时,它们将保持在相同的地址。 我知道弹性IP地址的概念,但我不想重新分配IP地址,然后重新映射我的环境。 是否可以保留当前的IP地址 谢谢 丹尼尔,我不这么认为。。如果可能的话,亚马逊将不会通过购买弹性ip地址赚钱…这是不可能的 公共IP地址从Amazon的公共IP地址池分配给您的实例,并且与您的AWS帐户不关联 当一个公共IP地址与您的实例解除关联时,它将被释放回公共IP地址池,您不能重用它 如果


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



谢谢
丹尼尔,我不这么认为。。如果可能的话,亚马逊将不会通过购买弹性ip地址赚钱…

这是不可能的

公共IP地址从Amazon的公共IP地址池分配给您的实例,并且与您的AWS帐户不关联

当一个公共IP地址与您的实例解除关联时,它将被释放回公共IP地址池,您不能重用它

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

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

弹性IP有其独特的优势

如果您已经达到了一个区域中弹性IP地址的最大数量,并且您所需要的只是一种连接到EC2实例的固定方式,那么我建议使用route53记录,而不是使用IP地址

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

保持指向EC2地址的记录的方法是

以下是我的EC2的主要功能:

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 >
--//
内容类型:多部分/混合;边界=“/”
MIME版本:1.0
--//
内容类型:text/cloud-config;charset=“us ascii”
MIME版本:1.0
内容传输编码:7bit
内容配置:附件;filename=“cloud config.txt”
#云配置
云计算最终模块:
-[脚本用户,始终]
--//
内容类型:text/x-shellscript;charset=“us ascii”
MIME版本:1.0
内容传输编码:7bit
内容处置:附件;filename=“userdata.txt”
#!/bin/bash
#获取公共ip地址
#参考:https://stackoverflow.com/questions/38679346/get-public-ip-address-on-current-ec2-instance
导出公共_ip=$(curl)http://169.254.169.254/latest/meta-data/public-ipv4)
猫
--//
这里我使用
my domain.my company.com
作为EC2的路由53记录

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

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


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

这个答案有点未知,因为弹性IP不收费,除非您将其分配给任何运行实例,或者您将多个EIP与一个实例关联例如,IPv4地址很少,而且这些费用也不合理。