Anleitung: eine EC2-Instanz mit PowerShell erstellen

Administratoren, die PowerShell gewohnt sind, können von dieser und ihren zusätzlichen plattformübergreifenden Funktionen auch in AWS Gebrauch machen. Wir zeigen, wie das geht.

Die hauseigene Befehlszeile von AWS – die AWS CLI – oder die grafische Verwaltungskonsole sind die Klassiker für das Bedienen von Public-Cloud-Umgebungen von Amazon. Daneben hat Ihr Team aber die Möglichkeit, PowerShell zu verwenden.

Das ist besonders dann sinnvoll, wenn Sie geübte PowerShell-Admins an Bord haben. Im Vergleich zu AWS CLI bietet PowerShell außerdem einige nützliche Integrationen und plattformübergreifende Funktionen. In dieser Anleitung erfahren Sie, wie Sie eine EC2-Instanz mit PowerShell starten und welche Voraussetzungen und Abhängigkeiten erforderlich sind.

Voraussetzungen

AWS verfügt über mehrere PowerShell-Pakete, die Sie zur Verwaltung Ihres Kontos verwenden können, darunter:

  • AWS.Tools. Eine modulare Version von AWS Tools for PowerShell. Sie läuft sowohl auf einem Windows- Computer als auch auf Linux- oder macOS.
  • AWSPowerShell.NetCore. Die wichtigste Modulversion der AWS Tools for PowerShell. Sie kann sowohl auf einem Windows- Computer als auch auf Linux- oder macOS installiert werden.
  • AWSPowerShell. Die ältere Version der AWS-Tools für PowerShell mit einem großen Modul. Sie ist ausschließlich mit Windows kompatibel.

In den folgenden Beispielen verwenden wir das AWS.Tools-Modul auf Windows. Der Hauptvorteil von AWS.Tools ist, dass Sie nicht alle PowerShell-Module zu installieren brauchen, um Ihr Konto zu verwalten. Das macht die Sache zwar etwas komplizierter, da Sie im Voraus planen müssen, um die benötigten Module zu haben, aber Sie sparen dadurch Platz und Zeit. Befolgen Sie die Anweisungen zur Konfiguration Ihres Kontos, der Identitäts- und Zugriffsmanagement-Nutzer und der Zugriffsschlüssel.

Installieren Sie die erforderlichen Module mit dem folgenden Befehl:

Install-AWSToolsModule AWS.Tools.EC2,AWS.Tools.SimpleSystemsManagement

Wenn Sie eine Fehlermeldung erhalten, die besagt, dass der Befehl Install-AWSToolsModule nicht existiert, stellen Sie sicher, dass Sie das AWS-Installationsmodul installiert haben. Sie können das mit dem Befehl

Install-Module -Name AWS.Tools.Installer

nachholen.

Erstellen Sie Abhängigkeiten

Bevor Sie eine EC2-Instanz erstellen, müssen Sie bereits mehrere Ressourcen erstellt haben. Ist das der Fall, können Sie mit den Get-Befehlen die entsprechenden IDs abrufen.

Um die Mindestvoraussetzungen für die Bereitstellung und den Zugriff auf eine EC2-Instanz zu schaffen, benötigen Sie eine Virtual Private Cloud (VPC) mit einem Subnetz sowie einige andere Netzwerkkomponenten.

Starten Sie eine VPC

Wenn Sie bereits eine VPC haben, suchen Sie die VPC-ID mit dem folgenden Befehl:

Get-EC2Vpc -Region us-west-2

Um einen neuen VPC zu erstellen, definieren Sie zunächst ein Subnetz in CIDR-Notation (Classless Inter-Domain Routing):

$vpcCidr = '10.0.0.0/16'

Erstellen Sie dann die VPC mit dem Befehl New-EC2Vpc:

$vpc = New-EC2Vpc -CidrBlock $vpcCidr

Eine AWS VPC ist standardmäßig nicht mit DNS konfiguriert. Sie müssen also DNS in der VPC aktivieren, das an alle EC2-Instanzen in der VPC weitergegeben wird:

Edit-EC2VpcAttribute -VpcId $vpc.VpcId -EnableDnsSupport $true

Vielleicht möchten Sie die Hostnamen Ihrer EC2-Instanzen öffentlich auflösen. Sie können dies mit dem folgenden Befehl aktivieren:

Edit-EC2VpcAttribute -VpcId $vpc.VpcId -EnableDnsHostnames $true

Bereitstellen von Netzwerkressourcen

Als Nächstes müssen Sie einige Netzwerkressourcen hinzufügen, um sicherzustellen, dass die neue EC2-Instanz Zugang zum Internet hat und dass Sie eine Verbindung zu ihr herstellen können. Zu diesen Ressourcen gehören ein Internet-Gateway, eine Route zur Routentabelle und ein Subnetz innerhalb des VPC-Subnetzes.

Ein Internet-Gateway ermöglicht es einer VPC, mit dem Internet zu kommunizieren. Erstellen Sie zunächst eines:

$internetGateway = New-EC2InternetGateway

Verbinden Sie ihn dann mit der VPC:

Add-EC2InternetGateway -InternetGatewayId $internetGateway.InternetGatewayId –VpcId $vpc.VpcId

Wenn Sie möchten, dass die Knoten im Netzwerk, einschließlich der EC2-Instanz, wissen, wie sie ins Internet gelangen, benötigen Sie eine Routing-Tabelle und eine Route. Erstellen Sie die Tabelle und verknüpfen Sie sie mit der VPC:

$routeTable = New-EC2RouteTable -VpcId $vpc.VpcId

Fügen Sie dann eine Standardroute hinzu:

New-EC2Route -GatewayId $internetGateway.InternetGatewayId -RouteTableId $routeTable.RouteTableId -DestinationCidrBlock '0.0.0.0/0'

Da die Standardroute die einzige Route ist, die Sie der Routing-Tabelle hinzufügen, läuft der gesamte Verkehr über das Internet-Gateway. Sie können diese Regel ändern oder weitere Regeln hinzufügen. Änderungen sind eine bessere Option, wenn Sie mehr Kontrolle darüber haben möchten, welcher Datenverkehr über das Internet-Gateway gesendet wird, oder wenn Sie anderen Datenverkehr an andere Stellen leiten möchten.

Um ein Subnetz innerhalb des VPC-Subnetzes zu erstellen, wählen Sie zunächst eine Availability Zone:

Get-EC2AvailabilityZone -Region us-west-2 | ft RegionName,State,ZoneName

Hier werden alle Zonen in einer Region angezeigt. In diesem Fall handelt es sich um die Region us-west-2 (siehe Abbildung 1):

Abbildung 1: Wählen Sie eine Verfügbarkeitszone, die Ihren Bedürfnissen entspricht.
Abbildung 1: Wählen Sie eine Verfügbarkeitszone, die Ihren Bedürfnissen entspricht.

Erstellen Sie das Subnetz:

$subnet = New-EC2Subnet -VpcId $vpc.VpcId -CidrBlock '10.0.1.0/24' AvailabilityZone 'us-west-2a'

Registrieren Sie dann das Subnetz in der Routing-Tabelle:

Register-EC2RouteTable -RouteTableId $routeTable.RouteTableId -SubnetId $subnet.SubnetId

Erstellen einer EC2-Instanz

Der einfachste Weg, eine EC2-Instanz zu erstellen, sind Amazon Machine Images (AMIs). Diese ermöglichen es Ihnen, eine virtuelle Maschine (VM) schnell in Betrieb zu nehmen. Um die in Ihrer Region unterstützten AMIs zu sehen, verwenden Sie Get-SSMLatestEc2Image. Wenn Sie Windows-Images finden möchten, können Sie dies mit dem folgenden Verfahren tun:

Get-SSMLatestEC2Image -Path ami-windows-latest -Region us-west-2

Oder Sie können sich Linux-Images ansehen:

Get-SSMLatestEC2Image -Path ami-amazon-linux-latest -Region us-west-2

Wählen Sie aus der Liste das Image aus, das Ihren Anforderungen entspricht. Für dieses Beispiel wählen wir Amazons Linux 2022 mit dem Kernel 5.15:

$ami = Get-SSMLatestEC2Image -Path ami-amazon-linux-latest -Region us-west-2 -ImageName 'al2022-ami-minimal-kernel-5.15-x86_64'

Um einen EC2-Instanz-Typ auszuwählen, verwenden Sie den Befehl Get-Ec2InstanceType. Sie erhalten eine Vielzahl von Ausgaben. In Abbildung 2 hat die Region us-west-2 zum Beispiel 506 Instanz-Typen:

Abbildung 2: PowerShell listet verschiedene Instanztypen auf.
Abbildung 2: PowerShell listet verschiedene Instanztypen auf.

Sie können nach Speicher und CPUs filtern. So finden Sie zum Beispiel jeden Instanztyp mit maximal 4 GB Speicher und zwei CPUs:

Get-Ec2InstanceType -Region us-west-2 | `
  Select-Object InstanceType, @{Name = 'CPUs'; Expression = { $_.VCpuInfo.DefaultVCpus } } `
  @{Name = 'MemoryGB'; Expression = { $_.MemoryInfo.SizeInMiB / 1024 } } | `
    Where-Object { $_.CPUs -le 2 -and $_.MemoryGB -le 4 } | `
      Sort-Object InstanceType | `
        Format-Table InstanceType,CPUs,MemoryGB

Um diesen Befehl an Ihre spezifischen Ressourcenanforderungen anzupassen, ändern Sie den Where-Object-Ausdruck.

Der Befehl hat eine vereinfachte Ausgabe, die ähnlich aussieht wie in Abbildung 3:

Abbildung 3: Die vereinfachte Ausgabe zeigt Informationen über Ressourcen mit den gewünschten Eigenschaften.
Abbildung 3: Die vereinfachte Ausgabe zeigt Informationen über Ressourcen mit den gewünschten Eigenschaften.

Wählen Sie aus der Liste die t2.micro aus, die sich im kostenlosen AWS-Tier befindet. Erstellen Sie mit dem ausgewählten EC2-Instanz-Typ die EC2-Instanz:

$newEC2Splat = @{
  Region      = 'us-west-2'
  ImageId      = $ami
  AssociatePublicIp = $false
  InstanceType   = 't2.micro'
  SubnetId     = $subnet.SubnetId
}
New-Ec2Instance @newEC2Splat

Die Ausgabe sieht ähnlich aus wie in Abbildung 4:

Abbildung 4: So sollte die Ausgabe aussehen, wenn Sie die Instanz erstellt haben.
Abbildung 4: So sollte die Ausgabe aussehen, wenn Sie die Instanz erstellt haben.

Jetzt können Sie die Instanz mit Get-Ec2InstanceStatus finden, wie in Abbildung 5 dargestellt:

Abbildung 5: Überprüfen Sie die Instanz in PowerShell.
Abbildung 5: Überprüfen Sie die Instanz in PowerShell.

Um diese Instanz zu löschen, rufen Sie die Instanz-ID mit dem vorherigen Befehl ab und verwenden dann

Remove-EC2Instance:

Remove-EC2Instance -InstanceId i-0b684c72317a9e9d2 -Region us-west-2

Sie werden um eine Bestätigung gebeten und sehen ein Objekt, das die geänderten Zustände zusammenfasst, wie in Abbildung 6:

Abbildung 6: Wie Sie sehen wurde die Instanz gelöscht.
Abbildung 6: Wie Sie sehen wurde die Instanz gelöscht.

Erfahren Sie mehr über Cloud Computing