如何使用Terraform为AWS Lightsail实例设置防火墙规则?

我已经创建了a simple Terraform recipe to set up an AWS Lightsail instance,以在其中安装适用于Elasticsearch的Open Distro。

几天内一切运行顺利,我可以在端口5601上访问并使用Kibana实例。但是几天后,它无法访问,我发现我需要设置防火墙规则以允许流量访问到5601端口。

我想在Terraform配方中进行设置,就像使用GCP所做的那样:

resource "google_compute_firewall" "kibana" {
  name    = "kibana-${random_id.instance_id.hex}"
  network = "default"

  allow {
    protocol = "tcp"
    ports    = ["5601"]
  }

  source_ranges = ["0.0.0.0/0"]

}

但是我还没有找到一种清晰的方法。我需要aws_security_group还是无法从Terraform进行设置?

谢谢!

lixuebo7456 回答:如何使用Terraform为AWS Lightsail实例设置防火墙规则?

喜欢。不要通过Lightsail将5601暴露给世界。我至少会设置一个反向代理来使用SSL,但是最好为Kibana配置Xpack

,

到目前为止,最新的 terraform-provider-aws 2.50.0不支持我们为lightail实例创建防火墙规则。

但是我们可以通过将local-exec与内置的aws cli put-instance-public-ports结合使用来作弊。它将在配置实例之后在运行terraform的计算机中运行:

resource "aws_lightsail_instance" "worker" {
  ...
  name              = "worker-${count.index+1}"
  availability_zone = "ap-southeast-1a"
  blueprint_id      = "ubuntu_18_04"
  bundle_id         = "nano_2_0"
  ...
  provisioner "local-exec" {
    command = "aws lightsail put-instance-public-ports --instance-name=worker-${count.index+1} --port-infos fromPort=22,toPort=22,protocol=tcp fromPort=5601,toPort=5601,protocol=tcp"
  }
}
,
resource "aws_lightsail_instance_public_ports" "test" {
  instance_name = aws_lightsail_instance.test.name

  port_info {
    protocol  = "tcp"
    from_port = 80
    to_port   = 80
  }
}

https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/lightsail_instance_public_ports

添加到 AWS 提供商 3.34.0(2021 年 3 月 26 日)https://github.com/hashicorp/terraform-provider-aws/blob/v3.34.0/CHANGELOG.md

本文链接:https://www.f2er.com/3142704.html

大家都在问