The EC2 created using Terraform is showing, but I still get the error

resource "aws_instance" "devops_ec2" {
  ami                    = "ami-0c101f26f147fa7fd"
  instance_type          = "t2.micro"
  vpc_security_group_ids = [data.aws_security_group.default_sg.id]
  key_name               = aws_key_pair.devops_kp.key_name

  tags = {
    Name = "devops-ec2"
  }
}

resource "aws_key_pair" "devops_kp" {
    key_name   = "devops-kp"
    public_key = "ssh-rsa-server-key" 
}

data "aws_security_group" "default_sg" {
    name = "default"
}

# terraform init
# terraform validate
# terraform plan
# terraform apply --auto-approve
# terraform show

Hi @GautamGohel

Could you please confirm if the EC2 instance type was required as t2.micro?
Usually, all labs ask for t3.micro.

You need to create a tls_private_key resource and reference the public key in the aws_key_pair block:

resource "tls_private_key" "devops_kp" {
  algorithm = "RSA"
  rsa_bits  = 4096
}

resource "aws_key_pair" "devops_kp" {
  key_name   = "devops-kp"
  public_key = tls_private_key.devops_kp.public_key_openssh
}