EC2-Instanzen bereitstellen
Schreiben Sie Terraform-Konfigurationen, um virtuelle Amazon-EC2-Maschinen bereitzustellen und zu verwalten, einschließlich Netzwerk- und Security-Group-Einstellungen.
EC2-Instanzen bereitstellen ist eine kostenlose Terraform Infrastructure as Code-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Terraform Infrastructure as Code-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Terraform Infrastructure as Code-Kurs umfasst insgesamt 4 Lektionen.
EC2-Instanzen mit Terraform
Willkommen! In dieser Lektion lernen Sie, wie Sie virtuelle Amazon-EC2-Maschinen mit Terraform bereitstellen und verwalten.
EC2 (Elastic Compute Cloud) stellt skalierbare virtuelle Server in der Cloud bereit. Wenn Sie Infrastructure as Code (IaC) mit Terraform für EC2 verwenden, können Sie Ihre Server als Code definieren und so konsistente, wiederholbare Bereitstellungen sicherstellen.
Eine EC2-Instanz definieren
Die zentrale Ressource für eine EC2-Instanz in Terraform ist aws_instance. Sie müssen mindestens zwei wichtige Argumente angeben:
ami: Das zu verwendende Amazon Machine Image (Betriebssystem, Software).instance_type: Die Hardwarekonfiguration (z. B.t2.microfür für die kostenlose Kontingentstufe geeignete Instanzen).
So sieht ein einfacher aws_instance-Block aus:
resource "aws_instance" "web_server" {
ami = "ami-053b04dcd42d5397e" # Example: Amazon Linux 2 in us-east-1
instance_type = "t2.micro"
tags = {
Name = "MyWebServer"
}
}Ihre erste EC2-Instanz starten
Fügen wir nun alles zusammen, um eine einfache EC2-Instanz zu starten. Diese Konfiguration definiert den AWS-Provider und die EC2-Instanz.
Speichern Sie dies zum Bereitstellen als .tf-Datei und führen Sie anschließend terraform init, terraform plan und terraform apply in Ihrem Terminal aus.
provider "aws" {
region = "us-east-1"
}
resource "aws_instance" "web_server" {
ami = "ami-053b04dcd42d5397e" # Amazon Linux 2 AMI for us-east-1
instance_type = "t2.micro"
tags = {
Name = "MyBasicWebServer"
}
}Ihre EC2-Instanz absichern: Security Groups
Security Groups fungieren als virtuelle Firewalls für Ihre EC2-Instanzen. Sie steuern, welcher eingehende (Ingress) und ausgehende (Egress) Netzwerkverkehr Ihre Instanz erreichen oder verlassen darf.
Die korrekte Konfiguration ist entscheidend, um Ihre Server vor unbefugtem Zugriff zu schützen und gleichzeitig notwendige Dienste wie SSH oder HTTP zuzulassen.
Eine Security Group erstellen
Sie definieren eine Security Group mithilfe der Ressource aws_security_group. Wir fügen eine ingress-Regel hinzu, um SSH-Zugriff (Port 22) von überall (0.0.0.0/0) zuzulassen.
Sie müssen eine vorhandene vpc_id angeben, in der die Security Group angelegt werden soll.
resource "aws_security_group" "allow_ssh" {
name = "allow_ssh_traffic"
description = "Allow SSH inbound traffic"
vpc_id = "vpc-0123456789abcdef0" # IMPORTANT: Replace with YOUR VPC ID!
ingress {
description = "SSH from anywhere"
from_port = 22
to_port = 22
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
egress {
from_port = 0
to_port = 0
protocol = "-1" # All protocols
cidr_blocks = ["0.0.0.0/0"]
}
tags = {
Name = "allow_ssh_sg"
}
}Security Group an EC2 anhängen
Aktualisieren wir nun unsere aws_instance, damit sie diese neue Security Group verwendet. Wir verweisen mit aws_security_group.allow_ssh.id auf die ID der Security Group.
Denken Sie daran, vpc_id in der Security Group durch eine tatsächliche VPC-ID aus Ihrem AWS-Konto zu ersetzen, damit diese Konfiguration ausführbar ist.
provider "aws" {
region = "us-east-1"
}
resource "aws_security_group" "allow_ssh" {
name = "allow_ssh_traffic_example"
description = "Allow SSH inbound traffic"
vpc_id = "vpc-0123456789abcdef0" # IMPORTANT: Replace with YOUR VPC ID!
ingress {
from_port = 22
to_port = 22
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
egress {
from_port = 0
to_port = 0
protocol = "-1"
cidr_blocks = ["0.0.0.0/0"]
}
}
resource "aws_instance" "web_server" {
ami = "ami-053b04dcd42d5397e"
instance_type = "t2.micro"
vpc_security_group_ids = [
aws_security_group.allow_ssh.id
]
tags = {
Name = "WebServerWithSSH"
}
}EC2-Netzwerk: VPCs und Subnetze
Jede EC2-Instanz befindet sich innerhalb einer Virtual Private Cloud (VPC) und eines bestimmten Subnetzes innerhalb dieser VPC. Eine VPC ist ein isoliertes virtuelles Netzwerk, und Subnetze sind logische Unterteilungen Ihrer VPC (z. B. öffentliche oder private Subnetze).
Standardmäßig wird eine EC2-Instanz möglicherweise in einer Standard-VPC bzw. einem Standard-Subnetz gestartet. Für mehr Kontrolle und eine bessere Organisation geben Sie häufig an, welches Subnetz Ihre Instanz verwenden soll.
Ein grundlegendes Netzwerk erstellen
Um das Netzwerk unserer EC2-Instanz vollständig zu kontrollieren, definieren wir eine minimale VPC und ein öffentliches Subnetz. Dafür benötigen wir außerdem ein Internet-Gateway für den öffentlichen Zugriff und eine Routing-Tabelle zur Weiterleitung des Datenverkehrs.
Diese vollständige Einrichtung stellt sicher, dass Ihre EC2-Instanz mit dem Internet kommunizieren kann.
resource "aws_vpc" "main" {
cidr_block = "10.0.0.0/16"
tags = {
Name = "main-vpc-lesson"
}
}
resource "aws_subnet" "public" {
vpc_id = aws_vpc.main.id
cidr_block = "10.0.1.0/24"
availability_zone = "us-east-1a"
map_public_ip_on_launch = true # Instances in this subnet get a public IP
tags = {
Name = "public-subnet-lesson"
}
}
resource "aws_internet_gateway" "gw" {
vpc_id = aws_vpc.main.id
tags = {
Name = "main-gw-lesson"
}
}
resource "aws_route_table" "public_rt" {
vpc_id = aws_vpc.main.id
route {
cidr_block = "0.0.0.0/0" # Traffic to the internet
gateway_id = aws_internet_gateway.gw.id
}
tags = {
Name = "public-rt-lesson"
}
}
resource "aws_route_table_association" "public_rt_assoc" {
subnet_id = aws_subnet.public.id
route_table_id = aws_route_table.public_rt.id
}EC2 in Ihrem benutzerdefinierten Netzwerk
Nun fügen wir alle Komponenten zusammen: eine benutzerdefinierte VPC, ein Subnetz, eine Security Group und unsere EC2-Instanz. Die EC2-Instanz wird in unserem festgelegten öffentlichen Subnetz gestartet und erhält automatisch eine öffentliche IP-Adresse.
Diese vollständige Konfiguration ermöglicht Ihnen eine detaillierte Kontrolle über Ihre EC2-Bereitstellung und macht sie für SSH zugänglich.
provider "aws" {
region = "us-east-1"
}
resource "aws_vpc" "main" {
cidr_block = "10.0.0.0/16"
tags = { Name = "main-vpc-lesson" }
}
resource "aws_subnet" "public" {
vpc_id = aws_vpc.main.id
cidr_block = "10.0.1.0/24"
availability_zone = "us-east-1a"
map_public_ip_on_launch = true
tags = { Name = "public-subnet-lesson" }
}
resource "aws_internet_gateway" "gw" {
vpc_id = aws_vpc.main.id
tags = { Name = "main-gw-lesson" }
}
resource "aws_route_table" "public_rt" {
vpc_id = aws_vpc.main.id
route {
cidr_block = "0.0.0.0/0"
gateway_id = aws_internet_gateway.gw.id
}
tags = { Name = "public-rt-lesson" }
}
resource "aws_route_table_association" "public_rt_assoc" {
subnet_id = aws_subnet.public.id
route_table_id = aws_route_table.public_rt.id
}
resource "aws_security_group" "allow_ssh" {
name = "allow_ssh_lesson"
description = "Allow SSH inbound traffic"
vpc_id = aws_vpc.main.id
ingress {
from_port = 22
to_port = 22
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
egress {
from_port = 0
to_port = 0
protocol = "-1"
cidr_blocks = ["0.0.0.0/0"]
}
}
resource "aws_instance" "web_server" {
ami = "ami-053b04dcd42d5397e"
instance_type = "t2.micro"
subnet_id = aws_subnet.public.id
vpc_security_group_ids = [
aws_security_group.allow_ssh.id
]
associate_public_ip_address = true
tags = {
Name = "FullWebServerLesson"
}
}Überprüfung der EC2-Konfiguration
Welche der folgenden Argumente sind erforderlich, um in Terraform eine grundlegende aws_instance-Ressource zu definieren?
Rückblick: EC2 mit Terraform
Sehr gut! Sie haben gelernt, wie Sie Amazon-EC2-Instanzen mit Terraform bereitstellen.
- Wir haben EC2-Instanzen mithilfe der Ressource
aws_instancedefiniert. - Wir haben sie mit
aws_security_groupabgesichert und den Netzwerkverkehr gesteuert. - Wir haben ein einfaches benutzerdefiniertes Netzwerk (VPC, Subnetz, Internet-Gateway und Routing-Tabelle) für unsere EC2-Instanzen eingerichtet.
- Damit verfügen Sie über die Grundlage, Ihre virtuellen Server als Code bereitzustellen und zu verwalten.
Häufig gestellte Fragen
Ist die Lektion „EC2-Instanzen bereitstellen“ kostenlos?
Ja — der vollständige Text von „EC2-Instanzen bereitstellen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Terraform Infrastructure as Code-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Terraform Infrastructure as Code-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „EC2-Instanzen bereitstellen“?
Schreiben Sie Terraform-Konfigurationen, um virtuelle Amazon-EC2-Maschinen bereitzustellen und zu verwalten, einschließlich Netzwerk- und Security-Group-Einstellungen. Du übst Terraform Infrastructure as Code mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Terraform Infrastructure as Code zu starten?
Keine Vorkenntnisse erforderlich. Terraform Infrastructure as Code auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.
Wie lange dauert die Lektion „EC2-Instanzen bereitstellen“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Terraform Infrastructure as Code-Lektion Code schreiben und ausführen?
Ja. Jede Terraform Infrastructure as Code-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- AWS-Provider konfigurieren
- EC2-Instanzen bereitstellen
- S3-Buckets und IAM verwalten
- VPC und Netzwerk konfigurieren