Erstellen eines neuen VPC

Für die Erstellung eines neuen VPCs sind folgende Schritte notwendig. Ein VPC ist immer an eine AWS Region gebunden.

  1. Unter Services den Dienst VPC auswählen.
  2. Links unter Virtual private cloud auf Your VPCs klicken.
  3. In der Übersicht auf Create VPC klicken.
  4. Im Abschnitt VPC Settings die Auswahl für Resources to create auf VPC only belassen.
  5. Anschliessend unter Name tag - optional Workshop-VPC eingeben.
  6. Als IPv4 CIDR block den Addressbereich 172.100.0.0/16 verwenden. Eure Eingabemaske sollte anschliessend wie folgt aussehen.
  7. Mit einem Klick auf Create VPC die Erstellung abschliessen.
  8. In der Übersicht können alle Details des VPC eingesehen werden.

Der CIDR Range eines VPCs kann nachträglich NICHT geändert werden. Jedoch können zusätzliche CIDR Ranges zu einem bestehenden VPC hinzugefügt werden. Wichtig ist auch, dass sich CIDR Ranges nicht überlappen. Denn oftmals müssen Daten zwischen VPCs oder mit einem On-Premise Datacenter ausgetauscht werden.

Subnetze definieren

Nach dem VPC selbst können individuelle Subnetze angelegt werden.

  1. Unter Services den Dienst VPC auswählen.
  2. Links unter Virtual private cloud auf Subnets klicken. In der Übersicht sind alle bestehenden Subnetze mit ihren Details aufgelistet (z.B. zugehöriges VPC, CIDR Range, freie IP Adressen etc.). Als Nächstes müssen im neu erstellen VPC Subnetze angelegt werden.
  3. In der Übersicht oben rechts auf Create Subnet klicken.
  4. Im Dropdown unter VPC ID das Workshop-VPC auswählen.
  5. Unter Subnet settings folgende Informationen eingeben:
    1. Subnet name: Workshop-PublicA
    2. Availability Zone: US East (N. Virginia / us-east-1a)
    3. IPv4 CIDR block: 172.100.1.0/24
  6. Darunter auf Add new subnet klicken, um ein weiteres Subnetz hinzuzufügen und folgende Daten eingeben:
    1. Subnet name: Workshop-PublicB
    2. Availability Zone: US East (N. Virginia / us-east-1b)
    3. IPv4 CIDR block: 172.100.2.0/24. Eure Eingabemaske sollte anschliessend wie folgt aussehen.
  7. Mit einem Klick auf Create subnet die Erstellung abschliessen.

Wenn in der Übersicht unter Subnets ein gerade erstelltes Subnetz per Checkbox ausgewählt wird können die Details angezeigt werden (z.B. Subnetz ID, VPC, AZ, Route tables etc.)

Die IP Adressen eines Subnetzes müssen aus dem zuvor definierten VPC CIDR Range stammen. Ein Subnetz ist immer einer einzigen Availability Zone (AZ) zugeordnet. Um hochverfügbare Architekturen zu realisieren werden also mehrere Subnets in unterschiedlichen AZ’s benötigt.

Internet Gateway erstellen

Um eine Kommunikation zum Internet zu ermöglichen und um Ressourcen aus dem Internet zugänglich zu machen, muss ein Internet Gateway (IGW) erstellt werden:

  1. Unter Services den Dienst VPC auswählen.
  2. Links unter Virtual private cloud auf Internet gateways klicken. Bereits bestehende Internet Gateways werden in der Übersicht angezeigt.
  3. Klick auf Create internet gateway um ein neues IGW zu erstellen.
  4. Unter Name tag Workshop-IGW eingeben.
  5. Klick auf Create internet gateway.
  6. Auf der nächsten Maske muss nun durch einen Klick auf Actions und Attach to VPC das IGW nun dem VPC zugewiesen werden.
  7. Unter Available VPCs das Workshop-VPC auswählen.
  8. Mit einem Klick auf Attach internet gateway den Vorgang abschliessen.

Routing-Tabelle konfigurieren

Eine Routing-Tabelle enthält eine Reihe von Regeln (Routes) die festlegen, wohin der Netzwerkverkehr aus einem VPC weitergeleitet wird. Pro Route wird der Ziel-IP Adressbereich sowie das Gateway oder die Netzwerkschnittstelle angegeben, an die der Netzwerkverkehr geschickt wird. Dabei kann eine Routing-Tabelle einem Subnetz explizit zugeordnet werden. Andernfalls wird das Subnetz implizit der Default Routing-Tabelle des VPCs zugeordnet, die bei der Erstellung des VPCs automatisch erzeugt wird.

Es ist eine Good Practice, eine neue Routing-Tabelle mit den entsprechenden Regeln zu erstellen.

  1. Unter Services den Dienst VPC auswählen.
  2. Links unter Virtual private cloud auf Route tables klicken. Bereits bestehende Routing-Tabellen werden in der Übersicht angezeigt.
  3. Klick auf Create route table um eine neue Routing-Tabelle zu erstellen.
  4. Unter Name - optional Workshop-Public eingeben.
  5. Unter *VPC im Dropdown das Workshop-VPC auswählen.
  6. Klick auf Create route table.
Zuweisung der Subnetze

Nachdem die neue Routing-Tabelle erstellt wurde, müssen die Subnetze zugewiesen und die Regeln (Routes) erstellt werden.

  1. Klick auf den Tab Subnet associations.
  2. Im Abschnitt Explicit subnet associations auf Edit subnet associations klicken.
  3. Beide verfügbaren Subnetze Workshop-PublicA und Workshop-PublicB auswählen.
  4. Klick auf Save associations.
  5. Nochmals auf Subnet associations klicken und kontrollieren, ob die beiden Subnetze nun im Abschnitt Explicit subnet associations angezeigt werden.
Definition der Route Einträge

Nun muss die Regel (Route) angelegt werden, damit der ein- und ausgehende Netzwerkverkehr über das Internet Gateway geschickt wird.

  1. Klick auf den Abschnitt Routes.
  2. Die bestehende Route mit Destination 172.100.0.0/16 und dem Ziel local ermöglicht bereits die Kommunikation innerhalb des VPCs (über alle Subnetze hinweg).
  3. Klick auf Edit routes.
  4. Klick auf Add route.
  5. Unter Destination nun 0.0.0.0/0 angeben.
  6. Als Target wird das Internet Gateway ausgewählt.
  7. Konfiguration mit Save changes speichern.

Die Routing-Tabelle enthält nun zwei Regeln. Damit ist die Konfiguration des Routings abgeschlossen.

Security Groups einrichten

Eine Sicherheitsgruppe dient als virtuelle Firewall für Ressourcen und somit der Steuerung von ein- und ausgehendem Datenverkehr. Sicherheitsgruppen wirken auf der Instanz-Ebene und nicht auf der Subnetzebene. Daher kann jede Instanz in einem Subnetz eines VPCs einer anderen Reihe von Sicherheitsgruppen zugeordnet werden. Im letzten Schritt müssen also die Firewall Regeln (Security Groups) konfiguriert werden, damit Ressourcen später auch tatsächlich erreicht werden können. Für die Beispielanwendung werden drei Security Groups benötigt. Eine Security Group regelt den Zugriff aus dem Internet auf den Load Balancer. Die zweite Security Group regelt den Zugriff vom Load Balancer auf die Container Instanzen und die Dritte den Zugriff von Container Instanzen auf die Datenbank.

Zugriff aus dem Internet

Anbei die Konfiguration für die erste Security Group für den Zugriff aus dem Internet:

  1. Unter Services den Dienst VPC auswählen.
  2. Links unter Security auf Security groups klicken. Bereits bestehende Security Groups werden in der Übersicht angezeigt.
  3. Auf den Button Create security group klicken.
  4. Unter Security group name und Description Workshop-ALB-SG eingeben. ALB steht hier für Application Load Balancer.
  5. Im Dropdown unter VPC das Workshop-VPC auswählen.
  6. Im Abschnitt Inbound rules auf Add rule klicken.
  7. Als Type das Protokoll HTTP auswählen.
  8. Unter Source den Eintrag Anywhere-IPv4 auswählen.
  9. Im Feld Description Allow HTTP from anywhere eintragen. Eure Eingabemaske sollte anschliessend wie folgt aussehen.
  10. Mit dem Klick auf Create security group die Erstellung abschliessen.
  11. In der Übersicht können die Einstellungen nochmals überprüft werden.
Zugriff auf den Backend Container

Anbei die Konfiguration für die zweite Security Group für den Zugriff vom Load Balancer auf die Container Instanzen:

  1. Links unter SECURITY auf Security groups klicken. Bereits bestehende Security Groups werden in der Übersicht angezeigt.
  2. Auf den Button Create security group klicken.
  3. Unter Security group name und Description Workshop-ECS-Backend-SG eingeben. ECS steht hier für Elastic Container Service.
  4. Im Dropdown unter VPC das Workshop-VPC auswählen.
  5. Im Abschnitt Inbound rules auf Add rule klicken.
  6. Bei Type das Protokoll auf Custom TCP belassen.
  7. Als Port range den Port 5000 angeben.
  8. Unter Source im Suchfenster nun die Load Balancer Security Group Workshop-ALB-SG auswählen.
  9. Im Feld Description Allow access from ALB eintragen.
  10. Mit dem Klick auf Create security group die Erstellung abschliessen.
  11. In der Übersicht können die Einstellungen nochmals überprüft werden.
Zugriff auf die Datenbank

Anbei die Konfiguration für die dritte Security Group für den Zugriff der Container Instanzen auf die Datenbank:

  1. Links unter SECURITY auf Security groups klicken. Bereits bestehende Security Groups werden in der Übersicht angezeigt.
  2. Auf den Button Create security group klicken.
  3. Unter Security group name und Description Workshop-RDS-SG eingeben. RDS steht hier für Relational Database Service.
  4. Im Dropdown unter VPC das Workshop-VPC auswählen.
  5. Im Abschnitt Inbound rules auf Add rule klicken.
  6. Als Type das Protokoll MYSQL/Aurora auswählen.
  7. Unter Source im Suchfenster nun die Load Balancer Security Group Workshop-ECS-Backend-SG auswählen.
  8. Im Feld Description Allow DB Access from Container Instances eintragen.
  9. Mit dem Klick auf Create security group die Erstellung abschliessen.
  10. In der Übersicht können die Einstellungen nochmals überprüft werden.

Durch die Referenzierung der Security Groups untereinander wird einerseits sichergestellt, dass NUR die Ressourcen, denen die entsprechenden Source Security Group zugewiesen ist auf eine weitere Ressource zugreifen kann. Anderseits ist somit aber auch die Flexibilität gewährleistet, dass z.B. bei der Skalierung der Container Instanzen (bedeutet mehrere IP’s im VPC) auch alle diese Instanzen über die Security Group Zuordnung vom Load Balancer erreicht oder auf die Datenbank zugreifen können. Man nennt die Referenzierung von Security Groups auch Security Group Chaining.