config instanceType string {
	__logicalName = "InstanceType"
	default = "t3.micro"
}

resource webSecGrp "aws:ec2/securityGroup:SecurityGroup" {
	__logicalName = "WebSecGrp"
	ingress = [{
		protocol = "tcp",
		fromPort = 80,
		toPort = 80,
		cidrBlocks = ["0.0.0.0/0"]
	}]

	options {
		version = "4.37.1"
	}
}

resource webServer "aws:ec2/instance:Instance" {
	__logicalName = "WebServer"
	instanceType = instanceType
	ami = invoke("aws:index/getAmi:getAmi", {
		filters = [{
			name = "name",
			values = ["amzn-ami-hvm-*-x86_64-ebs"]
		}],
		owners = ["137112412989"],
		mostRecent = true
	}).id
	userData = join("\n", [
		"#!/bin/bash",
		"echo 'Hello, World from ${webSecGrp.arn}!' > index.html",
		"nohup python -m SimpleHTTPServer 80 &"
	])
	vpcSecurityGroupIds = [webSecGrp.id]

	options {
		version = "4.37.1"
	}
}

output instanceId {
	__logicalName = "InstanceId"
	value = webServer.id
}

output publicIp {
	__logicalName = "PublicIp"
	value = webServer.publicIp
}

output publicHostName {
	__logicalName = "PublicHostName"
	value = webServer.publicDns
}