You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Terraform在Lightsail中添加IP限制的防火墙规则?

解决方案

是的,可以通过Terraform实现这个需求,核心是利用aws_lightsail_instance_public_ports资源的port_info块中的cidrs参数指定允许访问的IP范围,同时结合Terraform的资源引用或数据源获取目标实例的公网IP。

具体实现方式

1. 同一配置内的实例引用

如果两个实例都在当前Terraform配置中创建,直接引用源实例的public_ip_address属性即可:

# 源实例(需要被允许访问的实例)
resource "aws_lightsail_instance" "source" {
  name              = "source-instance"
  availability_zone = "us-east-1a"
  blueprint_id      = "amazon_linux_2"
  bundle_id         = "nano_2_0"
}

# 目标实例(需要配置防火墙规则的实例)
resource "aws_lightsail_instance" "target" {
  name              = "target-instance"
  availability_zone = "us-east-1a"
  blueprint_id      = "amazon_linux_2"
  bundle_id         = "nano_2_0"
}

# 配置目标实例的端口规则,仅允许源实例IP访问
resource "aws_lightsail_instance_public_ports" "target_ports" {
  instance_name = aws_lightsail_instance.target.name

  port_info {
    from_port = 22
    to_port   = 22
    protocol  = "tcp"
    # 引用源实例公网IP,/32表示精确匹配单个IP
    cidrs     = ["${aws_lightsail_instance.source.public_ip_address}/32"]
    cidrs_are_public = true
  }
}

2. 引用外部已存在的实例

如果源实例是手动创建或在其他配置中部署的,使用data "aws_lightsail_instance"数据源获取其公网IP:

# 获取已存在的源实例信息
data "aws_lightsail_instance" "source" {
  name = "existing-source-instance"
}

# 目标实例(或已存在的目标实例)
resource "aws_lightsail_instance" "target" {
  name              = "target-instance"
  availability_zone = "us-east-1a"
  blueprint_id      = "amazon_linux_2"
  bundle_id         = "nano_2_0"
}

# 配置防火墙规则
resource "aws_lightsail_instance_public_ports" "target_ports" {
  instance_name = aws_lightsail_instance.target.name

  port_info {
    from_port = 80
    to_port   = 80
    protocol  = "tcp"
    cidrs     = ["${data.aws_lightsail_instance.source.public_ip_address}/32"]
    cidrs_are_public = true
  }
}

关键说明

  • cidrs参数支持单个或多个CIDR范围,使用/32可精确匹配单个公网IP,和Web UI中添加单个IP的效果完全一致。
  • 若需允许多个实例访问,只需在cidrs列表中追加对应的IP/32条目即可。
  • 执行terraform apply后,目标实例的防火墙规则会自动更新为仅允许指定实例的IP访问对应端口。

内容的提问来源于stack exchange,提问作者Jay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 09:05:16