Kurs
Wie man AWS CLI verwendet: Ein geführter Rundgang für Anfänger
AWS ist ein Cloud-Service-Anbieter, der in seinen Rechenzentren auf der ganzen Welt eine breite Palette an skalierbaren und bedarfsgerechten Diensten anbietet, darunter Rechenleistung, Speicherplatz, Datenbanken, maschinelles Lernen, Netzwerke, Analysen und mehr. In den Kursen Einführung in AWS und AWS Cloud-Technologie und -Services erfährst du mehr!
Um mit Ressourcen auf AWS zu interagieren und sie zu konfigurieren, können wir entweder die AWS Management Console oder die AWS CLI verwenden.
In diesem Tutorial zeigen wir dir, wie du die AWS CLI von Grund auf installierst, sie so konfigurierst, dass sie mit deinem AWS-Konto kommuniziert, und wie du einige grundlegende Ressourcen mit der CLI erstellst.
Was ist die AWS CLI?
Die AWS CLI ist ein leistungsstarkes Tool, mit dem du direkt über die Befehlszeile auf deinem Computer mit den AWS-Diensten interagieren kannst. AWS CLI-Befehle bieten Funktionen, die der Durchführung von Aufgaben in der AWS Management Console entsprechen.
Wenn du zum Beispiel alle Sicherheitsgruppen in einer bestimmten AWS-Region auflisten möchtest, musst du über die Konsole zum Abschnitt "Sicherheitsgruppen" im EC2-Service navigieren.
Sieh dir die Sicherheitsgruppen in der AWS-Konsole an.
Dasselbe Ergebnis kannst du auch mit dem Befehl aws ec2 describe-security-groups
in der AWS CLI erzielen.
Sieh dir die Sicherheitsgruppen über die AWS CLI auf dem lokalen Terminal an.
Installation der AWS CLI
Wir gehen durch die Installation von AWS CLI auf Windows, Mac und Linux.
Es gibt zwei Hauptversionen von AWS CLI, Version 1 und 2. Wir werden nur die Version 2 besprechen, da sie die spätere Version mit mehr Funktionen ist. Die neuesten Informationen zur Installation oder zum Update auf die neueste Version der AWS CLI findest du in der AWS-Dokumentation.
Installieren unter Windows
Lade das Installationsprogramm von der offiziellen AWS-Websiteherunter. Öffnedas "AWSCLIV2"-Windows-Installationspaket und du wirst mit dem unten abgebildeten Fenster begrüßt.
AWS CLI Einrichtungsassistent.
Wähle "Weiter" und fahre fort, die Lizenzvereinbarung zu akzeptieren.
AWS CLI-Lizenzvertrag.
Bestätige den Installationsort und fahre mit der Installation fort. Die Installation selbst sollte nicht länger als 5 Minuten dauern.
Bestätige den Installationsort.
Installation in Arbeit.
Installation abgeschlossen.
Um zu überprüfen, ob die Installation erfolgreich war, öffne das Terminal und führe den Befehl aws --version
aus. Sie sollte ähnlich wie die folgende Ausgabe aussehen.
Überprüfe die Installation von AWS CLI unter Windows.
Installieren unter macOS
Wir können das AWS CLI auf MacOS über Homebrew oder den Paketinstaller installieren. Ich werde beide Installationsmethoden behandeln.
Paket-Installation
Lade das .pkg-Installationsprogramm von der offiziellen AWS-Website herunter. Wenn du die Datei AWSCLIV2.pkg
öffnest, siehst du das unten stehende Fenster.
AWS CLI-Installation.
Akzeptiere die Lizenz, bestätige den Installationsort und fahre mit der Installation fort.
Meldung über die erfolgreiche Installation.
Um zu überprüfen, ob die Installation erfolgreich war, öffne das Terminal und führe den Befehl aws --version
aus. Sie sollte ähnlich wie die folgende Ausgabe aussehen.
Überprüfe die AWS CLI-Installation auf MacOS.
Homebrew
Stelle sicher, dass du Homebrew lokal installiert hast. Um das zu überprüfen, führe brew --version
aus. Ansonsten kannst du die Installationsanweisungen auf der offiziellen Homebrew-Seite nachlesen.
Führe dann die folgenden Befehle aus, um das CLI zu installieren:
# With brew installed, update Homebrew's formulae and cask definitions
brew update
# Install AWS CLI
brew install awscli
# Verify the installation
aws --version
brew aktualisieren und installieren
Überprüfe die Installation der Brühe.
Installieren unter Linux
Um die Installation unter Linux zu demonstrieren, habe ich eine Amazon Linux EC2 mit dem AMI ami-0bd55ebedabddc3c0 in Betrieb genommen. Obwohl die AWS CLI Version 2 standardmäßig installiert ist, ist sie nicht die neueste Version. Die Schritte zur Aktualisierung und Installation sind ähnlich.
# Switch to superuser
sudo su -
# If you’re on Amazon Linux, to install the latest version of the AWS CLI, you must first uninstall the pre-installed yum version
yum remove awscli
# Download the AWS CLI zip file
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
# Unzip the file
unzip awscliv2.zip
# Run the installer
./aws/install
# Verify AWS CLI
aws --version
Lade das Installationsprogramm herunter und entpacke es.
Führe das Installationsprogramm aus und überprüfe die Installation.
Konfigurieren der AWS CLI
Nachdem wir AWS CLI installiert haben, müssen wir es konfigurieren, bevor wir es für die Interaktion mit unseren AWS-Ressourcen nutzen können. Die Konfiguration umfasst das Einrichten der AWS-Anmeldedaten und einiger optionaler Standardeinstellungen.
Wenn wir uns bei der AWS-Konsole anmelden, melden wir uns entweder als Benutzer an oder übernehmen eine Rolle. Wenn wir AWS CLI verwenden, um mit unseren Ressourcen zu interagieren, müssen wir dies als Benutzer tun oder eine Rolle übernehmen.
AWS-Anmeldeinformationen einrichten
Es gibt zwei Möglichkeiten, sich bei der AWS-Konsole anzumelden. Die erste Möglichkeit ist die Verwendung eines Benutzers, der über den Identity and Access Management (IAM) Service erstellt wurde.
IAM-Benutzer-Anmeldeseite.
Die zweite Möglichkeit ist die Verwendung eines Benutzers, der über den IAM Identity Center Service erstellt wurde.
AWS Access Portal Anmeldeseite.
Um AWS CLI einzurichten, musst du aws_access_key_id
und aws_secret_access_key
auf deinem Rechner einrichten. Dieses Schlüsselpaar identifiziert dein Konto und gewährt dir Zugang zu AWS. Je nachdem, auf welche Weise du dich einloggst, unterscheidet sich der Erhalt der Daten leicht.
IAM-Benutzer
Um die AWS CLI als IAM-Benutzer zu verwenden, navigierst du über die AWS-Konsole zum IAM-Service und wählst einen bestehenden Benutzer aus oder erstellst einen neuen. Ich werde einen bestehenden Benutzer verwenden.
IAM-Benutzer.
Wähle den Benutzer aus und navigiere zur Registerkarte "Sicherheitsnachweise". Scrolle nach unten, um die "Zugriffstasten" zu sehen. Für dieses Tutorial werde ich einen weiteren Zugangsschlüssel erstellen. Wähle "Zugangsschlüssel erstellen".
Registerkarte "Sicherheitsnachweise" eines IAM-Benutzers.
Wähle "Command Line Interface (CLI)".
Erstelle einen Zugangsschlüssel.
Bestätige und erstelle.
Zugangsschlüssel erstellt.
Lade die .csv-Datei zur sicheren Aufbewahrung herunter. Dann führst du den Befehl aws configure
lokal aus und gibst den Wert für den Zugang und den geheimen Zugangsschlüssel ein. Wir schreiben diesen Satz von Anmeldeinformationen in das "Standard"-Profil, da wir kein Profil mit dem --profile
Flag angegeben haben. Wir werden die Profile in einem späteren Abschnitt besprechen.
AWS configure-Befehl.
Ein versteckter Ordner namens ".aws" wird in deinem Home-Verzeichnis (~
) erstellt.
Der Ordner .aws.
Sie enthält zwei Dateien, config
und credentials
.
Inhalte im Ordner .aws.
Die Datei config
speichert die Standardregion und die Ausgabeoption, die du oben eingegeben hast. In der Datei credentials
werden die Dateien aws_access_key_id
und aws_secret_access_key
gespeichert. Um ihren Inhalt einzusehen, kannst du die Befehle cat config
und cat credentials
ausführen.
Führe den Befehl aws sts get-caller-identity
aus, um zu überprüfen, ob die Anmeldedaten funktionieren und die richtige IAM-Identität zurückgegeben wird.
Überprüfe die Anmeldedaten.
IAM Identity Center Benutzer
Nach der Anmeldung wirst du zum AWS Access Portal weitergeleitet, um das AWS-Konto und die Rolle auszuwählen, die du bei der Anmeldung an der Konsole übernehmen möchtest. Wähle "Zugriffsschlüssel" für das Konto und die Rolle, die du für die AWS CLI verwenden möchtest.
AWS Access Portal.
Es erscheint ein Fenster, das mit dem unten abgebildeten Screenshot identisch ist. Wähle Option 2, kopiere den angegebenen Text und füge ihn in deine AWS-Anmeldedatei ein.
Anmeldeinformationen aus dem AWS Access Portal.
Beachte, dass es neben aws_access_key_id
und aws_secret_access_key
auch aws_session_token
gibt, verglichen mit den Anmeldedaten für einen IAM-Benutzer, die im vorherigen Abschnitt behandelt wurden. Dies erhöht die Sicherheit der über das IAM Identity Center erstellten Benutzeranmeldeinformationen, da das Sitzungs-Token abläuft und der Benutzer sich erneut authentifizieren muss, um das Token zu aktualisieren.
Nachdem du den Text aus Option 2 in deine AWS-Anmeldedatei eingefügt hast:
# Use the AWS profile that you have just added
export AWS_PROFILE=<<Account Number>_<Role Name>>
# Valid that the credentials work
aws sts get-caller-identity
Überprüfe die Anmeldedaten.
Das Sitzungs-Token wird irgendwann ablaufen und wir müssen ein neues generieren.
Abgelaufener Token.
Anstatt sie erneut aus dem Access Portal zu kopieren, wie wir es oben getan haben, können wir die aws sso login
von unserem lokalen Rechner aus ausführen. Befolge die folgenden Befehle, um die Single Sign-On (SSO)-Einstellungen auf deinem Rechner zu konfigurieren.
# Configure SSO to refresh your session token. The ~/.aws/sso folder will be created.
aws configure sso
AWS configure SSO Befehl.
Du wirst aufgefordert, dich einzuloggen.
Gewähre AWS CLI-Zugriff.
AWS CLI-Antrag genehmigt.
Wenn dein Session-Token wieder abläuft, rufe einfach aws sso login
auf.
Ausgabe der AWS SSO-Anmeldung.
Konfigurationsoptionen
Wir können verschiedene Konfigurationen als Standardoptionen nach unseren Wünschen anpassen. Wenn nicht explizit angegeben, gelten diese Standardkonfigurationen für den AWS CLI-Befehl.
Um Konfigurationswerte in der Datei config
zu aktualisieren oder hinzuzufügen, kannst du den unten stehenden Befehl ausführen oder sie manuell mit vim oder nano ändern.
aws configure set <setting> <value>
region
Bei AWS-Ressourcen, die sich in einer Region befinden, muss bei der Ausführung der AWS CLI-Befehle die Adresse region
angegeben werden.
Wenn das Flag "--region <region name>" im Befehl nicht angegeben wird, wird die in der Konfigurationsdatei angegebene Standardregion verwendet. Wenn keine Standardregion definiert ist, bekommst du folgende Fehlermeldung.
Fehler, wenn keine Region angegeben ist.
Ausgabe
Die Einstellung output
konfiguriert das Ausgabeformat, das der AWS CLI-Befehl zurückgibt.
Das Standard-Ausgabeformat, das wir oben konfiguriert haben, ist zum Beispiel "JSON", und der Befehl aws sts get-caller-identity
liefert die Ausgabe im JSON-Format. Andere gültige Optionen sind "Tabelle" und "Text".
So sieht die Ausgabe der Tabelle aus. Ich habe das --output table
Flag hinzugefügt, um den Standardausgabewert "JSON" zu überschreiben.
aws sts get-caller-identity --output table.
rolle_arn & quelle_profil
Wenn du deinen IAM-Benutzer nicht direkt verwenden und stattdessen eine Rolle übernehmen willst, gib die Konfiguration role_arn
und source_profile
an.
aws configure set role_arn arn:aws:iam::<Account ID>:role/<Role name>
# Put “default” as the profile name if you do not know what to put
aws configure set source_profile <profile name>
Nachdem du sie angegeben hast, überprüfe, ob die IAM-Rolle tatsächlich angenommen wird.
Überprüfe die Anmeldedaten.
cli_pager
Standardmäßig leitet die AWS CLI ihre Ausgaben durch einen Pager wie less, bei dem du zum Beenden q drücken musst. Wir können dieses Verhalten ändern, indem wir den Pager deaktivieren und die Ausgabe so konfigurieren, dass sie direkt im Terminal angezeigt wird, indem wir diesen ausführen:
aws configure set cli_pager ""
Ausgabe mit deaktiviertem cli_pager.
cli_history
Um eine Aufzeichnung der ausgeführten AWS CLI-Befehle zu erhalten, aktiviere die cli_history
, indem du sie ausführst:
aws configure set cli_history enabled
Der Verlauf wird in einer SQLite-Datenbank auf ~/.aws/cli/history
gespeichert.
# View your AWS CLI history
aws history list
# Show details of a specific command
aws history show <command-id>
Zusammenfassung der Konfiguration
Zusammenfassung der Standardkonfigurationsoptionen:
Konfigurationsschlüssel |
Beschreibung |
region |
Standard-AWS-Region (z. B. us-east-1, ap-southeast-1). |
Ausgabe |
Ausgabeformat: json, Text oder Tabelle. |
role_arn |
ARN der zu übernehmenden IAM-Rolle. |
source_profile |
Profil, das als Quelle verwendet wird, wenn du eine Rolle übernimmst. |
cli_pager |
Befehlsausgabe-Pager (z. B. weniger, oder auf "" setzen, um zu deaktivieren). |
cli_history |
Aktiviere oder deaktiviere die CLI-History-Datei (aktiviert oder deaktiviert). |
cli_timestamp_format |
Lege das Format des Zeitstempels fest (keine, iso8601, iso8601_ms). |
Wenn du die obigen Beispiele befolgt hast, sollte deine ~/.aws/config
Datei so aussehen.
Inhalt der Konfigurationsdatei.
Die AWS CLI-Befehle verstehen
Alle AWS CLI-Befehle haben ein Standardformat:
Format der AWS CLI-Befehle - Bild nach Autor.
Für jeden Dienst gibt es optionale oder obligatorische Optionen/Flags, die hinzugefügt werden können.
Grundlegende Befehle
Unsere AWS CLI kann jetzt programmatisch auf unser AWS-Konto zugreifen, um mit den Services zu interagieren. Probieren wir einige grundlegende Befehle für einige häufig genutzte AWS-Services aus!
EC2
Beschreibung |
Befehl |
Beschreibt die angegebenen Instanzen oder alle Instanzen. |
aws ec2 describe-instances [--instance-ids <wert>] |
Beschreibe die angegebenen Sicherheitsgruppen oder alle deine Sicherheitsgruppen |
aws ec2 describe-security-groups [--group-ids <value>] |
Erstellt einen Snapshot eines EBS-Volumes und speichert ihn in Amazon S3 |
aws ec2 create-snapshot --volume-id <wert> |
Eine VPC erstellen |
aws ec2 create-vpc [--cidr-block <wert>] |
Ausgabe der Beschreibung aller Instanzen.
Weitere Informationen findest du in der offiziellen Dokumentation zu EC2.
S3
Beschreibung |
Befehl |
Alle S3 Buckets auflisten |
aws s3 ls |
Objekte in einem S3-Bucket auflisten |
aws s3 ls s3://<bucket-name> --recursive |
Verschiebt eine lokale Datei oder ein S3-Objekt an einen anderen Ort lokal oder in S3 |
aws s3 mv <LocalPath> <S3Uri> oder <S3Uri> <LocalPath> oder <S3Uri> <S3Uri> |
Löscht ein Objekt in einem S3-Bucket |
aws s3 rm <S3Uri> |
S3-Befehle.
Weitere Informationen findest du in der offiziellen Dokumentation zu S3.
Beachte, dass es für den AWS S3 Service neben dem oben beschriebenen aws s3
CLI-Befehl auch den aws s3api
CLI-Befehl gibt. Die Befehle von aws s3
sind ziemlich allgemein, während die Befehle von aws s3api
detaillierter und weniger detailliert sind.
Weitere Informationen findest du in der offiziellen Dokumentation zu s3api.
Lambda
Beschreibung |
Befehl |
Um alle Lambda-Funktionen aufzulisten |
aws lambda list-functions |
Um Informationen über eine Lambda-Funktion zu erhalten |
aws lambda get-function --function-name <Funktionsname> |
Ruft eine Lambda-Funktion auf |
aws lambda invoke --function-name <Funktionsname> |
Gibt Informationen über die Funktion zurück.
Weitere Informationen findest du in der offiziellen Dokumentation für Lambda.
Beispiel: Verwendung der AWS CLI für die EC2-Verwaltung
Schau dir den Blog AWS EC2 Tutorial For Beginners an, um die Grundlagen von EC2 aufzufrischen! Sie hilft dir, die folgenden Befehle besser zu verstehen.
# To create an EC2 instance
aws ec2 run-instances \
--image-id ami-0bd55ebedabddc3c0 \
--count 1 \
--instance-type t2.micro
Ausgabe der Erstellung einer Instanz.
Führe aws ec2 describe-instances
aus, um die Details aller EC2-Instanzen anzuzeigen, wie in den grundlegenden Befehlen beschrieben.
Wenn du den Befehl ausführen willst, um eine bestimmte Instanz oder mehrere Instanzen abzufragen, füge das Flag --instance-ids
mit der Instanz-ID hinzu. Zum Beispiel: aws ec2 describe-instances --instance-ids i-00836ea7575852f10
.
Ausgabe der Beschreibung einer Instanz.
# To stop the instance
aws ec2 stop-instances --instance-ids i-00836ea7575852f10
Ergebnis des Anhaltens einer Instanz.
# To start the instance
aws ec2 start-instances --instance-ids i-00836ea7575852f10
Ausgabe des Starts einer Instanz.
# To terminate the instance
aws ec2 terminate-instances --instance-ids i-00836ea7575852f10
Ausgang des Beendens einer Instanz.
Beispiel: Arbeiten mit S3-Buckets
Hier sind einige nützliche Befehle, um gängige Operationen mit S3-Buckets auszuführen - eine Grundvoraussetzung in AWS!
# To create an S3 bucket. “mb” is short for “make bucket”
aws s3 mb s3://<bucket name> --region <region name>
# To list out all buckets
aws s3 ls
# To copy an object from your local or S3 object to another location locally or in S3. In the screenshot below, I used aws s3 cp <LocalPath> <S3Uri>
aws s3 cp <LocalPath> <S3Uri> or <S3Uri> <LocalPath> or <S3Uri> <S3Uri>
# To delete an object from the S3 bucket
aws s3 rm <S3Uri>
# To sync the source directory to the destination. In the screenshot below, I used aws s3 sync <LocalPath> <S3Uri>
aws s3 sync <LocalPath> <S3Uri> or <S3Uri> <LocalPath> or <S3Uri> <S3Uri>
# To list the objects in the bucket
aws s3 ls <S3Uri>
# To delete an S3 bucket, it has to be empty of objects and versioned objects before it can be deleted. “rb” is short for “remove bucket”
aws s3 rb s3://my-unique-bucket-name-gfht68
# The “aws s3 rb” command comes with the --force parameter to first remove all of the objects in the bucket and then remove the bucket itself.
aws s3 rb s3://mybucket --force
Ausgabe der AWS S3-Befehle.
Erweiterte AWS CLI-Funktionen
Nachdem wir nun einige grundlegende CLI-Befehle geübt haben, können wir uns einige fortgeschrittene Funktionen und Anwendungsfälle der Benutzeroberfläche ansehen.
Aufgaben mit der AWS CLI automatisieren
Die AWS CLI-Beispiele, die wir bisher behandelt haben, beinhalten einen einzigen Befehl, um Informationen zu erhalten oder eine Aktion für den Service durchzuführen. Sehen wir uns Beispiele dafür an, wie man mehrere CLI-Befehle in einem Skript zusammenfasst, um Aufgaben zu automatisieren.
Beispiel: Automatisiertes Skript zum Start einer EC2-Instanz
Erstelle eine launch_ec2.sh
Datei mit dem folgenden Inhalt.
#!/bin/bash
# Set variables
INSTANCE_NAME="My_Demo_Instance"
AMI_ID="ami-0bd55ebedabddc3c0" # Replace with your preferred AMI ID
INSTANCE_TYPE="t2.micro" # Replace with the desired instance type
REGION="ap-southeast-1"
# Launch the EC2 instance
INSTANCE_ID=$(aws ec2 run-instances \
--image-id "$AMI_ID" \
--instance-type "$INSTANCE_TYPE" \
--region "$REGION" \
--query "Instances[0].InstanceId" \
--output text)
echo "Instance launched with ID: $INSTANCE_ID"
# Add a Name tag to the instance
aws ec2 create-tags \
--resources "$INSTANCE_ID" \
--tags Key=Name,Value="$INSTANCE_NAME" \
--region "$REGION"
echo "Tag added: Name=$INSTANCE_NAME"
# Wait for the instance to reach a running state
aws ec2 wait instance-running --instance-ids "$INSTANCE_ID" --region "$REGION"
echo "Instance is now running."
Du kannst das Skript so anpassen, dass es weitere Parameter enthält, z. B. den Schlüsselnamen (--key-name
), die Sicherheitsgruppen-ID (--security-group-ids
), die Subnetz-ID (--subnet-id
) usw.
# Grant the user permission to execute the shell script
chmod u+x ./launch_ec2.sh
# Run the script
./launch_ec2.sh
Starte das EC2-Skript.
Beispiel: Automatisches Stoppen aller laufenden EC2-Instanzen
Erstelle eine stop_ec2.sh
Datei mit dem folgenden Inhalt:
#!/bin/bash
# Check if a region is provided as an argument
if [ -n "$1" ]; then
REGION="$1"
else
# Get the default region from AWS CLI configuration
REGION=$(aws configure get region)
if [ -z "$REGION" ]; then
echo "No region provided, and no default region found in AWS CLI configuration."
echo "Please provide a region as an argument: ./stop-all-ec2.sh <region>"
exit 1
fi
fi
echo "Using region: $REGION"
# Get a list of all running EC2 instance IDs
RUNNING_INSTANCES=$(aws ec2 describe-instances \
--filters Name=instance-state-name,Values=running \
--query "Reservations[*].Instances[*].InstanceId" \
--output text \
--region "$REGION")
if [ -z "$RUNNING_INSTANCES" ]; then
echo "No running EC2 instances found in region $REGION."
else
echo "Stopping the following EC2 instances in region $REGION:"
echo "$RUNNING_INSTANCES"
echo "Give it around 1 minute for the instances to be stopped."
# Stop the instances
aws ec2 stop-instances --instance-ids $RUNNING_INSTANCES --region "$REGION"
# Wait for the instances to stop
aws ec2 wait instance-stopped --instance-ids $RUNNING_INSTANCES --region "$REGION"
echo "All instances have been stopped successfully."
fi
# Grant the user permission to execute the shell script
chmod u+x ./stop_all_ec2.sh
# Run the script with the default region
./stop_all_ec2.sh
# Run the script overwriting the default region
./stop_all_ec2.sh us-west-1
EC2-Skript anhalten.
Verwendung der AWS CLI mit JSON und JQ
Die Ausgaben der AWS CLI-Befehle enthalten eine ganze Reihe von Informationen. In manchen Fällen brauchen wir vielleicht nicht alle Informationen, sondern nur eine Teilmenge der Ausgabe.
Im Abschnitt "EC2" unter "Grundlegende Befehle" oben haben wir zum Beispiel gesehen, dass der Befehl aws ec2 describe-instances
eine lange JSON-Ausgabe zurückgibt. Um diese Ausgabe zu analysieren und nur das zu erhalten, was benötigt wird, können wir das Flag --query
oder den Befehl jq
verwenden.
Beispiele für die Verwendung des Flags --query
findest du in den Automatisierungsskripten im Abschnitt "Automatisieren von Aufgaben mit AWS CLI" oben.
Beachte, dass der Befehl jq
nur bei einer JSON-Ausgabe funktioniert. Konfiguriere daher die Standardausgabe als "JSON" oder übergebe das --output json
Flag für jeden Befehl.
Überprüfe, ob jq
installiert ist:
Überprüfe die Version von jq.
# Get a list of all EC2 instances and filter only the instance ID and state
aws ec2 describe-instances | jq '.Reservations[].Instances[] | {InstanceId: .InstanceId, State: .State.Name}'
# Count the number of EC2 instances in the "running" state.
aws ec2 describe-instances --output json | jq '[.Reservations[].Instances[] | select(.State.Name == "running")] | length'
# Extract Lambda Function Names and their runtimes
aws lambda list-functions --output json | jq '.Functions[] | {FunctionName: .FunctionName, Runtime: .Runtime}'
AWS CLI-Befehle mit jq.
Verwendung der AWS CLI in einer CI/CD-Pipeline
Wir können die AWS CLI in unserer Pipeline-Konfiguration verwenden, um Interaktionen mit AWS-Services zu automatisieren, z. B. die Bereitstellung und Aktualisierung unserer AWS-Ressourcen, wenn unsere CI/CD-Pipeline läuft.
Im folgenden Beispiel verwende ich die GitLab-Pipeline, um die Bereitstellung einer Lambda-Funktion zu demonstrieren.
# .gitlab-ci.yml file configuration
stages:
- demo-cicd
datacamp_job:
image: registry.gitlab.com/gitlab-org/cloud-deploy/aws-base:latest
stage: demo-cicd
id_tokens:
GITLAB_OIDC_TOKEN:
aud: https://gitlab.com
variables:
ROLE_ARN: "arn:aws:iam::717240872783:role/<Name of IAM Role that pipeline will use>"
AWS_DEFAULT_REGION: "ap-southeast-1"
script:
- aws --version
- >
export $(printf "AWS_ACCESS_KEY_ID=%s AWS_SECRET_ACCESS_KEY=%s AWS_SESSION_TOKEN=%s"
$(aws sts assume-role-with-web-identity
--role-arn ${ROLE_ARN}
--role-session-name "GitLabRunner-${CI_PROJECT_ID}-${CI_PIPELINE_ID}"
--web-identity-token ${GITLAB_OIDC_TOKEN}
--duration-seconds 3600
--query 'Credentials.[AccessKeyId,SecretAccessKey,SessionToken]'
--output text))
- aws sts get-caller-identity
- ls -l
- aws lambda create-function --function-name <function name> --runtime python3.13 --role <ARN of IAM role that Lambda function will use> --handler index.lambda_handler --zip-file fileb://lambda.zip
- unset AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY AWS_SESSION_TOKEN
GitLab-Pipeline-Job-Protokolle.
Du kannst die Pipeline-Konfiguration so ändern, dass die Parameter zusammen mit dem AWS CLI-Befehl als Variablen im Pipeline-Job übergeben werden, anstatt sie fest zu kodieren, wie ich es im obigen Screenshot getan habe.
Auf diese Weise kannst du jedes Mal, wenn du eine Lambda-Funktion erstellen willst, die Variablen zusammen mit deiner Pipeline-Konfiguration in das Git-Repository eingeben und übertragen.
Best Practices für die Verwendung der AWS CLI
Wie bei allen Best Practices gilt auch hier, dass du nur die minimalen Berechtigungen erteilst, die für die Durchführung der Aufgabe erforderlich sind, unabhängig davon, ob du einen Benutzer oder eine Rolle verwendest.
Lass uns weitere Best Practices für die AWS CLI untersuchen!
AWS IAM-Rollen für die Sicherheit verwenden
AWS IAM-Rollen bieten temporäre Sicherheitsanmeldeinformationen für den Zugriff auf AWS-Ressourcen. Diese Berechtigungsnachweise werden automatisch rotiert und sind auf die Berechtigungen einer bestimmten Rolle beschränkt, wodurch die mit langfristigen Zugangsschlüsseln verbundenen Risiken reduziert werden.
Der empfohlene Weg, eine Rolle zu verwenden, ist die über das IAM Identity Center erstellte Rolle, wie im Abschnitt "IAM Identity Center" unter "Einrichten von AWS-Anmeldeinformationen" oben gezeigt. Dies ist auch die von AWS empfohlene Vorgehensweise.
Empfohlene Vorgehensweise von AWS. Bildquelle: AWS.
Wenn der Cloud-Administrator deinen Benutzer über das IAM Identity Center anlegt, muss er einen Berechtigungssatz zuweisen.
Benutzer im IAM Identity Center.
Für jeden Berechtigungssatz wird von AWS eine IAM-Rolle erstellt.
Berechtigungssätze im IAM Identity Center.
Mehrere Profile verwalten
In deiner Arbeitsumgebung wirst du wahrscheinlich mehr als ein AWS-Konto verwalten. Wir verwenden Profile, um mehrere Sätze von Anmeldeinformationen in der ~/.aws/credentials
und ~/.aws/config
Datei zu konfigurieren.
Im Abschnitt "Einrichten der AWS-Anmeldedaten" haben wir den Befehl aws configure
ausgeführt, ohne das Profil über das Flag --profile
oder die Umgebungsvariable AWS_PROFILE
anzugeben. So werden die Anmeldedaten und die Konfigurationsinformationen zum Standardprofil hinzugefügt. Um ein neues Profil hinzuzufügen, kannst du die aws configure --profile
ausführen, um einen separaten Satz von Anmeldeinformationen unter dem neuen Profil zu haben.
# Create a new profile called “dev”
aws configure --profile dev
# To run AWS CLI commands using the dev profile instead of the default profile, set the AWS_PROFILE environment variable to “dev”. Alternatively, add the “--profile dev” for every AWS CLI command.
export AWS_PROFILE=dev
# Validate that the IAM identity under the new profile is returned
aws sts get-caller-identity
Neue Anmeldedaten unter einem neuen Profil.
Halte dein AWS CLI auf dem neuesten Stand
Es ist wichtig, unsere AWS CLI zu aktualisieren, um eine effektive Interaktion mit unseren AWS-Diensten zu gewährleisten und von den neuesten Funktionen und Verbesserungen zu profitieren.
Wenn du AWS CLI mit dem Installationspaket für Windows und Mac installiert hast, musstest du eine Datei auf deinen lokalen Computer herunterladen und sie ausführen. Die Aktualisierung erfolgt in den gleichen Schritten: Lade das neueste Installationspaket herunter und führe es aus.
Wenn du AWS CLI über brew auf dem Mac installiert hast, ist die Aktualisierung so einfach wie die Ausführung von brew upgrade awscli
. Ich habe hier bereits die neueste Version installiert.
brew upgrade awscli Befehlsausgabe.
Für Linux sind die Schritte die gleichen wie bei der Installation. Siehe das Codeschnipsel im Abschnitt "Installieren unter Linux". Folge den Befehlen, um die Zip-Datei herunterzuladen, zu entpacken und das Installationsprogramm auszuführen.
Protokollierung und Fehlerbehebung
Die AWS CLI ist ein großartiges Werkzeug, aber wir können bei der Arbeit mit ihr auch vor Herausforderungen stehen. Sehen wir uns an, wie wir sie überwinden können.
CLI-Verlaufsprotokoll
Gelegentlich kann es vorkommen, dass wir einen Befehl und seine Parameter vergessen haben, den wir zuvor ausgeführt haben, oder dass wir die Ausgabe eines ausgeführten Befehls sehen wollen. Die Aktivierung von cli_history
kann dieseBedenken ausräumen. Weitere Informationen findest du im Abschnitt "Konfigurationsoptionen" weiter oben.
CLI-Konfigurationsfehler
Wenn du auf AWS CLI-Konfigurationsfehler stößt, kannst du mit dem Befehl aws configure
herausfinden, ob die CLI die Informationen aus deinen Anmeldeinformationen und der Konfigurationsdatei korrekt liest.
Der Fehler "Unable to parse config file".
# View configuration for the existing profile
aws configure list
# Verify credentials
aws sts get-caller-identity
# Verify configuration values
aws configure get region
aws configure get role_arn
# Review Environment Variables. Variables like AWS_PROFILE, AWS_ACCESS_KEY_ID, and AWS_REGION can override configuration
env | grep AWS
Andere Fehler
In seltenen Fällen kann es vorkommen, dass beim Ausführen von AWS CLI-Befehlen ein unbekannter Fehler auftritt. Um das Problem mit dem API-Aufruf zu beheben oder mehr Informationen zu sammeln, um den Fehler zu verstehen, kann es hilfreich sein, das --debug
Flag zum Befehl hinzuzufügen.
# Add the “--debug” flag
aws ec2 describe-instances --debug
AWS CLI-Befehl mit dem Debug-Flag.
Die zusätzlichen Informationen sollten dir helfen, das Problem zu verstehen und zu beheben.
Fazit
Die AWS CLI ist ein leistungsstarkes Tool, mit dem du effizient mit AWS-Diensten interagieren, Routineaufgaben automatisieren und Cloud-Ressourcen einfach verwalten kannst. In diesem Lernprogramm habe ich dir beigebracht, wie du die AWS CLI installierst, konfigurierst und verwendest, um wichtige Vorgänge für mehrere gängige AWS-Services auszuführen.
Egal, ob du ein Cloud-Anfänger oder ein erfahrener DevOps-Profi bist, die Beherrschung der AWS CLI kann deine Produktivität erheblich steigern. Vom Erstellen und Verwalten von Ressourcen bis hin zum Automatisieren von Bereitstellungen - mit der AWS CLI in deinem Toolkit sind die Möglichkeiten praktisch unbegrenzt.
Nimm dir die Zeit, um mit den Befehlen zu experimentieren, erweiterte Skriptfunktionen in deiner Pipeline zu erkunden und die AWS CLI in deine täglichen Aufgaben zu integrieren. Viel Spaß beim Cloud Computing!
Ich empfehle dir, den AWS Cloud Practitioner Lernpfad auf DataCamp zu besuchen, um ein AWS Experte zu werden.
FAQs
Warum sollte ich AWS CLI statt der AWS Management Console verwenden?
Mit der AWS CLI kannst du direkt von deinem Terminal aus mit den AWS-Diensten interagieren und so Automatisierungsfunktionen und schnellere Arbeitsabläufe nutzen, die mit der AWS Console nicht so einfach möglich sind.
Muss ich die Prüfsumme der Datei überprüfen, nachdem ich das Installationspaket von AWS heruntergeladen habe?
Obwohl es nicht erforderlich ist, ist es eine gute Praxis, die Prüfsumme des Installationspakets zu überprüfen.
Wie kann ich überprüfen, ob AWS CLI bereits auf meinem Rechner installiert ist?
Öffne dein Terminal und führe "aws --version" aus. Wenn er "aws-cli/x.x.x..." zurückgibt, ist AWS CLI installiert. Nichtsdestotrotz ist es ratsam, auf die neueste Version zu aktualisieren.
Was sollte ich tun, wenn bei der Verwendung von AWS CLI Authentifizierungs- oder Berechtigungsfehler auftreten?
Diese Fehler treten aufgrund falscher Anmeldedaten oder unzureichender Berechtigungen auf. Überprüfe deine AWS-Zugangsschlüssel und stelle sicher, dass sie mit dem richtigen IAM-Benutzer oder der richtigen Rolle verknüpft sind und dass deine IAM-Richtlinien die erforderlichen Aktionen zulassen. Wenn du eine Rolle verwendest und das Session-Token abgelaufen ist, führe den Befehl "aws sso login" aus. Detaillierte Schritte findest du im Abschnitt "IAM Identity Center Benutzer".
Wie kann ich AWS CLI verwenden, um Ressourcen über mehrere Regionen hinweg zu verwalten?
Du kannst die AWS-Region in deinen Befehlen mit dem Flag "--region" angeben oder eine Standardregion mit dem Befehl "aws configure" festlegen. Weitere Informationen findest du im Abschnitt "Konfigurationsoptionen".
Als erfahrener Cloud-Infrastruktur- und DevOps-Ingenieur mit Fachkenntnissen in Terraform, GitLab CI/CD-Pipelines und einer breiten Palette von AWS-Diensten ist Kenny ein Experte für die Entwicklung skalierbarer, sicherer und kostenoptimierter Cloud-Lösungen. Seine Stärken liegen im Aufbau wiederverwendbarer Infrastrukturen, in der Automatisierung von Arbeitsabläufen mit Python und Bash und in der Einbindung bewährter Sicherheitspraktiken in CI/CD-Pipelines. Mit seiner umfangreichen praktischen Erfahrung mit Kubernetes und verschiedenen Observability-Tools ist Kenny ein Experte für die Verwaltung und Orchestrierung von Microservices und stellt gleichzeitig eine robuste Observability und Leistungsüberwachung sicher. Anerkannt für seine Führungsqualitäten, sein Mentoring und sein Engagement für Innovationen, liefert Kenny stets zuverlässige und skalierbare Lösungen für moderne Cloud-native Anwendungen. Er ist bestrebt, sich über Branchentrends und neue Technologien auf dem Laufenden zu halten und seine Fähigkeiten ständig zu erweitern und zu vertiefen.
Lerne mehr über AWS mit diesen Kursen!
Kurs
AWS Security and Cost Management Concepts
Kurs
Introduction to AWS Boto in Python
Der Blog
Die 32 besten AWS-Interview-Fragen und Antworten für 2024
Der Blog
Die 20 besten Snowflake-Interview-Fragen für alle Niveaus

Nisha Arya Ahmed
20 Min.

Der Blog
Lehrer/innen und Schüler/innen erhalten das Premium DataCamp kostenlos für ihre gesamte akademische Laufbahn
Der Blog
Top 30 Generative KI Interview Fragen und Antworten für 2024

Hesam Sheikh Hassani
15 Min.
Der Blog
Q2 2023 DataCamp Donates Digest
Der Blog