加油
努力

AWS EC2实例支持静态IP吗,怎么设置?

AWS EC2 实例原生不支持“静态 IP"(即固定公网 IP),因为 EC2 的默认公网 IP 是动态分配的,实例停止(Stop)再启动后通常会改变。

但是,AWS 提供了 Elastic IP (弹性公网 IP) 来解决这个问题。Elastic IP 是一个固定的公网 IPv4 地址,可以永久绑定到你的实例、NAT 网关或网络接口上,即使实例停止和重新启动,该 IP 也不会改变。

以下是设置 Elastic IP 的具体步骤:

核心概念

  • Elastic IP (EIP):一个独立的、固定的公网 IP 资源。
  • 关联 (Associate):将 EIP 绑定到运行中的 EC2 实例。
  • 解绑与重新分配:如果实例被释放,EIP 不会自动释放,需要手动操作以避免产生费用。

方法一:通过 AWS 控制台设置(图形化界面)

这是最常用的方式,适合单次配置。

1. 创建/分配一个新的 Elastic IP

如果你还没有可用的 EIP,需要先创建一个:

  1. 登录 AWS 管理控制台
  2. 搜索并进入 EC2 服务。
  3. 在左侧导航栏中,找到 网络与安全 (Network & Security) -> 弹性 IP (Elastic IPs)
  4. 点击顶部的 分配弹性 IP (Allocate Elastic IP address) 按钮。
  5. 保持默认设置(通常选择"Amazon 池”),点击 分配弹性 IP (Allocate Elastic IP address)
    • 此时你会看到一个新的 IP 地址,状态为 "Available"(可用)。

2. 将 Elastic IP 绑定到 EC2 实例

  1. 选中刚才创建的 Elastic IP(勾选复选框)。
  2. 点击顶部工具栏的 关联弹性 IP (Associate Elastic IP address)
  3. 在弹出的窗口中:
    • 资源类型 (Resource type):选择 EC2 实例
    • 实例 (Instance ID):从下拉菜单中选择你想要绑定固定 IP 的那台 EC2 实例。
    • 私有 IP (Private IP):通常保持默认(实例的默认私有 IP)。
  4. 点击 关联 (Associate)

完成! 现在该 EC2 实例的公网访问地址就是刚才设置的 Elastic IP 了。即使你执行 Stop 然后 Start 操作,这个 IP 依然保持不变。


方法二:通过 AWS CLI 设置(命令行)

如果你习惯使用命令行或需要自动化脚本,可以使用以下命令:

# 1. 分配一个新的 Elastic IP
aws ec2 allocate-address --domain vpc

# 输出示例:{ "AllocationId": "eipalloc-xxxxxxxx", "PublicIp": "xx.xx.xx.xx" }
# 记下 AllocationId 和 PublicIp

# 2. 将 EIP 关联到实例 (假设实例 ID 为 i-0123456789abcdef0)
aws ec2 associate-address 
    --allocation-id eipalloc-xxxxxxxx 
    --instance-id i-0123456789abcdef0

⚠️ 重要注意事项(关于计费与维护)

  1. 免费策略

    • 每个 AWS 账户在每个区域最多允许拥有 5 个 Elastic IP。
    • 如果 EIP 已经关联到一个正在运行的 EC2 实例,则不收取费用
    • 如果 EIP 未关联(闲置)或者关联到了一个非 EC2 的资源(如 NAT Gateway),则会按小时收费。
    • 如果 EIP 关联到了 EC2 实例,但该实例处于 Stopped(已停止) 状态,且没有绑定到任何实例,也会开始收费。
  2. 最佳实践

    • 不要随意创建大量未使用的 EIP,否则会产生不必要的账单。
    • 当你不再需要某个 EIP 时,记得先解除关联 (Dissociate),然后再释放 (Release) 它。
    • 如果实例被删除(Terminate),请务必检查是否还有残留的 EIP 未被释放。

总结

EC2 本身没有静态 IP,但通过申请 Elastic IP 并手动绑定,你可以实现完全相同的“静态公网 IP"效果。这是生产环境中确保服务器可访问性的标准做法。

云服务器