问询:基于Terraform在AWS搭建带公网IP的最简Apache+EC2配置
最简AWS EC2部署Apache的Terraform配置
你的现有配置已满足需求,但可通过复用AWS默认资源、精简冗余配置实现更简洁的写法,以下是最简版本:
# 查询Ubuntu官方AMI(适配eu-west-2区域) data "aws_ami" "ubuntu_ami" { most_recent = true owners = ["099720109477"] # Canonical官方账号ID filter { name = "name" values = ["ubuntu/images/hvm-ssd/ubuntu-jammy-22.04-amd64-server-*"] } } # 安全组:允许HTTP入站 resource "aws_security_group" "apache_http" { name = "apache-http" description = "Allow incoming HTTP traffic" ingress { from_port = 80 to_port = 80 protocol = "tcp" cidr_blocks = ["0.0.0.0/0"] } # 省略显式egress规则:Terraform会自动添加全量出站规则(0.0.0.0/0 所有端口/协议) } # EC2实例:部署Apache resource "aws_instance" "apache" { ami = data.aws_ami.ubuntu_ami.id instance_type = "t2.micro" # 使用默认VPC的公网子网:无需手动创建VPC/子网/IGW/路由表 vpc_security_group_ids = [aws_security_group.apache_http.id] user_data = <<-EOF #!/bin/bash apt update -y && apt install apache2 -y EOF }
简化说明:
- 复用默认网络资源:AWS每个区域都提供默认VPC,已预配置互联网网关、公网子网及默认路由表(包含0.0.0.0/0指向IGW的路由),无需手动创建VPC、子网、IGW等组件
- 精简安全组:省略非必要的IPv6规则(若不需要IPv6访问),且Terraform会自动添加全量出站规则,无需显式声明
- 简化EC2配置:默认公网子网中启动实例时,
map_public_ip_on_launch默认开启,无需手动设置associate_public_ip_address = true - 精简user_data:合并命令、去掉冗余日志输出,保持脚本简洁高效
内容的提问来源于stack exchange,提问作者Robert Johnstone
相关产品推荐
相关产品推荐

