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):
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:
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:
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:
Jetzt können Sie die Instanz mit Get-Ec2InstanceStatus finden, wie in Abbildung 5 dargestellt:
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: