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

Terraform创建AWS EC2实例失败,其余资源创建正常求助

问题排查:Terraform创建EC2实例卡住无结果

在Windows Powershell中使用Terraform创建AWS资源,VPC、子网、路由表、互联网网关等资源均创建成功,但EC2实例始终停留在"创建中"状态,AWS控制台也无法找到该实例。

EC2实例代码片段

# Create Ubuntu server and install/enable apache2

resource "aws_instance" "web-server-instance" {
  ami               = "ami-0aa2b7722dc1b5612"
  instance_type     = "t2.micro"
  availability_zone = "us-east-1"
  key_name          = "main-keyy"
}

terraform apply 输出

[0m[1maws_vpc.prod-vpc: Creating...[0m[0m
[0m[1maws_vpc.prod-vpc: Creation complete after 4s [id=vpc-0251a4f1198589dd5][0m
[0m[1maws_internet_gateway.gw: Creating...[0m[0m
[0m[1maws_subnet.subnet-1: Creating...[0m[0m
[0m[1maws_security_group.allow_web: Creating...[0m[0m
[0m[1maws_internet_gateway.gw: Creation complete after 1s [id=igw-007efae68da4918e7]
[0m[1maws_route_table.prod-route-table: Creating...[0m[0m
[0m[1maws_subnet.subnet-1: Creation complete after 1s [id=subnet-0e7c23002f90b4999]
[0m[1maws_route_table.prod-route-table: Creation complete after 2s [id=rtb-0589f802]
[0m[1maws_route_table_association.a: Creating...[0m[0m
[0m[1maws_security_group.allow_web: Creation complete after 3s [id=sg-0efcc1842043c]
[0m[1maws_network_interface.web-server-nic: Creating...[0m[0m
[0m[1maws_route_table_association.a: Creation complete after 0s [id=rtbassoc-08dd47]
[0m[1maws_network_interface.web-server-nic: Creation complete after 1s [id=eni-0e04]
[0m[1maws_eip.one: Creating...[0m[0m
**[0m[1maws_instance.web-server-instance: Creating...[0m[0m**
[0m[1maws_eip.one: Creation complete after 2s [id=eipalloc-0df345ad18a3bbbd6][0m

terraform plan 输出

[1m  # aws_instance.web-server-instance[0m will be created
[0m  [32m+[0m[0m resource "aws_instance" "web-server-instance" {
[32m+[0m[0m ami                                  = "ami-0aa2b7722dc1b5612"
[32m+[0m[0m arn                                  = (known after apply)
[32m+[0m[0m associate_public_ip_address          = (known after apply)
[32m+[0m[0m availability_zone                    = "us-east-1"
[32m+[0m[0m cpu_core_count                       = (known after apply)
[32m+[0m[0m cpu_threads_per_core                 = (known after apply)
[32m+[0m[0m disable_api_stop                     = (known after apply)
[32m+[0m[0m disable_api_termination              = (known after apply)
[32m+[0m[0m ebs_optimized                        = (known after apply)
[32m+[0m[0m get_password_data                    = false
[32m+[0m[0m host_id                              = (known after apply)
[32m+[0m[0m host_resource_group_arn              = (known after apply)
[32m+[0m[0m iam_instance_profile                 = (known after apply)
[32m+[0m[0m id                                   = (known after apply)
[32m+[0m[0m instance_initiated_shutdown_behavior = (known after apply)
[32m+[0m[0m instance_state                       = (known after apply)
[32m+[0m[0m instance_type                        = "t2.micro"
[32m+[0m[0m ipv6_address_count                   = (known after apply)
[32m+[0m[0m ipv6_addresses                       = (known after apply)
[32m+[0m[0m key_name                             = (known after apply)
[32m+[0m[0m monitoring                           = (known after apply)
[32m+[0m[0m outpost_arn                          = (known after apply)
[32m+[0m[0m password_data                        = (known after apply)
[32m+[0m[0m placement_group                      = (known after apply)
[32m+[0m[0m placement_partition_number           = (known after apply)
[32m+[0m[0m primary_network_interface_id         = (known after apply)
[32m+[0m[0m private_dns                          = (known after apply)
[32m+[0m[0m private_ip                           = (known after apply)
[32m+[0m[0m public_dns                           = (known after apply)
[32m+[0m[0m public_ip                            = (known after apply)
[32m+[0m[0m secondary_private_ips                = (known after apply)
[32m+[0m[0m security_groups                      = (known after apply)
[32m+[0m[0m subnet_id                            = (known after apply)
[32m+[0m[0m tags                                 = {
    [32m+[0m[0m "Name" = "web-server"
  }
[32m+[0m[0m tags_all                             = {
    [32m+[0m[0m "Name" = "web-server"
  }
[32m+[0m[0m tenancy                              = (known after apply)
[32m+[0m[0m user_data                            = "919a5df8f376fdfd21155dfe9ce72bdddfd69512"
[32m+[0m[0m user_data_base64                     = (known after apply)
[32m+[0m[0m user_data_replace_on_change          = false
[32m+[0m[0m vpc_security_group_ids               = (known after apply)
}

排查步骤

  • 检查AWS账户权限:确认Terraform使用的IAM用户拥有ec2:RunInstances及关联权限(如创建EBS卷、绑定安全组等)
  • 修正可用区配置:us-east-1是区域而非可用区,正确格式应为us-east-1a/us-east-1b等,错误的AZ会导致实例创建失败
  • 验证密钥对:确认main-keyy密钥对存在于us-east-1区域,名称完全匹配(大小写敏感)
  • 查看CloudTrail日志:搜索RunInstances事件,获取具体错误信息(如资源配额不足、AMI不可用等)
  • 开启Terraform调试日志:执行TF_LOG=DEBUG terraform apply,获取详细运行日志定位卡住原因
  • 确认AMI可用性:验证ami-0aa2b7722dc1b5612在us-east-1区域可访问,该AMI对应Ubuntu 20.04,跨区域无法使用
  • 检查资源依赖:若EC2关联了自定义网卡aws_network_interface.web-server-nic,确认网卡已正确配置子网、安全组,无冲突设置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 17:12:01