在 AWS EC2 上配置弹性公网 IP(EIP)主要是为了让实例在停止或重启后保留固定的公网入口,适合需要稳定对外服务的场景。
先说结论:EIP 是账户级别的资源,关联到实例后才产生特定费用逻辑,配置前需确认区域和配额。
- 适合:需要固定公网 IP 的 Web 服务或白名单场景
- 先准备:确认账户 EIP 配额及目标实例状态
- 验收:检查内外网 IP 一致性及连通性
- 风险:关联 EIP 瞬间会产生网络闪断,生产环境请谨慎操作
CLI 命令实操
使用 AWS CLI 可以快速分配和关联 EIP,注意参数格式不要多余符号。
# 分配一个新的 EIP
aws ec2 allocate-address `--domain` vpc `--region` <your-region>
# 将 EIP 关联到实例
aws ec2 associate-address `--instance-id` <instance-id> `--allocation-id` <allocation-id> `--region` <your-region>
报错处理:
LimitExceeded:表示当前区域 EIP 配额已达上限(默认 5 个),需提交工单申请提升。InvalidInstanceID.NotFound:检查实例 ID 是否正确,或确认 CLI 配置的区域与实例所在区域一致。InvalidAllocationID.NotFound:确认 Allocation ID 是否属于当前区域。
控制台配置步骤
1. 登录 AWS 控制台,进入 EC2 面板,左侧菜单找到“网络与安全”下的“弹性 IP”。
2. 点击“分配弹性 IP 地址”,选择 Amazon 提供的公网 IPv4 池,点击分配。
3. 选中刚分配的 EIP,点击“操作”->“关联弹性 IP 地址”,选择目标实例或网络接口。
4. 确认关联后,实例原有的动态公网 IP 会被 EIP 替换。
验证与测试
配置完成后,建议通过以下方式验证:
- 实例内验证:在实例内部执行
curl http://169.254.169.254/latest/meta-data/public-ipv4查看元数据中的公网 IP,应与控制台显示的 EIP 一致。 - 外部连通性:在本地机器执行
ping <eip-address>测试连通性(需实例安全组放行 ICMP)。 - 出口 IP 检查:在实例内执行
curl ifconfig.me确认出口流量是否经过 EIP。
核心机制与常见风险
默认情况下,EC2 实例启动时会分配一个动态公网 IP,实例停止后该 IP 会释放,再次启动会变化。EIP 是独立于实例存在的静态地址,除非手动释放,否则一直保留在账户下。
常见坑与注意事项:
- 闲置费用:EIP 关联到停止的实例或未关联任何资源时,AWS 会按小时收取闲置费用。
- 网络闪断:将 EIP 关联到正在运行的实例时,原公网 IP 会被移除,可能导致短暂连接中断,建议业务低峰期操作。
- 区域限制:EIP 不能跨区域使用,必须在同一区域内关联资源。
- 配额限制:每个区域默认最多 5 个 EIP,超出需申请配额提升。
参考来源
AWS Official Documentation - Elastic IP addresses
URL: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html