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
}

Step 1 - create ssh key - ssh-keygen -t rsa -b 4096 -f datacenter-kp

Step 2 - create main.tf file

resource “aws_instance” “datacenter_ec2” {
ami = “ami-0c101f26f147fa7fd”
instance_type = “t2.micro”
vpc_security_group_ids = [data.aws_security_group.default.id]
key_name = aws_key_pair.datacenter_kp.key_name

tags = {
Name = “datacenter-ec2”
}
}

resource “aws_key_pair” “datacenter_kp” {
key_name = “datacenter-kp”
public_key = “ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCqnTGgTy54dpb013EyUVwVZHrMCQLQVP3dAmc3Er2cQ6i/QHwm6UOPGUccBdWJmZ0AP6cRwOcQnAwZHSM7afZxWdaooAc4uaehG5KEX7Re/Z/VYEREjoZdNRVsm+jpXY7jb8w9RiU/tZLAWW5fcB1lHDwzRA88Wg19YXKYDn/uwhoKwhHOFRVk3KFOenSzotv/knmyuonljuXBp6t5OSTLNwPDI1qA8slf83aUuWREqbMfyWIH6Mt34FvnLZD1Ws2gQxLwnuUJySrUcCopslWKy0TKINfXYiNLSM5mjFp/rV67JcSFhDdPeeCDvIh45PYtEBgRuPAU0Xffa7WoiGs9sprV7PlcSEKMAJGjXm39f0/AZdVIvZdxZWQcQHImB+/57b1IetPEYKk5cWVyrrNYgS/w6l98PwTjL/svf9ptcq2EZYFcFvyZ1R5g1AUVG/z91bYtx1diLQkNNh0PCJxT6SlZd+0OztGJWoB4Y4QNanPR/4CD9slE90Icr1kgwls= bob@iac-server”
}

data “aws_security_group” “default” {
name = “default”
}

terraform init

terraform validate

terraform plan

terraform apply --auto-approve

terraform show