Wie Sie mehrere AWS CLI-Profile effizient konfigurieren und verwalten

Lernen Sie, mehrere AWS-Konten und -Umgebungen mithilfe benannter AWS CLI-Profile effizient zu verwalten. Dieser Leitfaden bietet Schritt-für-Schritt-Anweisungen zum Konfigurieren, Wechseln zwischen und Sichern verschiedener Sätze von AWS-Anmeldeinformationen und -Einstellungen. Optimieren Sie Ihren Cloud-Workflow durch die Beherrschung der Profilverwaltung für verbesserte Produktivität und Sicherheit.

So konfigurieren und verwalten Sie mehrere AWS CLI-Profile effizient

AWS CLI-Profile halten Ihre Konten, Rollen, Regionen und Ausgabeformate getrennt. Wenn Sie Entwicklung, Staging und Produktion auf demselben Laptop verwalten, helfen Ihnen Profile, die Ausführung eines Befehls gegen das falsche AWS-Konto zu vermeiden.

Das Ziel ist einfach: Machen Sie das beabsichtigte Konto explizit, reduzieren Sie langlebige Anmeldeinformationen, wo möglich, und führen Sie vor destruktiven Befehlen schnelle Überprüfungen durch.

Einrichten Ihrer AWS CLI-Konfigurationsdatei

Die AWS CLI speichert Profileinstellungen in zwei gemeinsamen Dateien:

  • ~/.aws/credentials für Zugriffsschlüssel und Sitzungsanmeldeinformationen.
  • ~/.aws/config für Region, Ausgabeformat, Rolleneinstellungen und andere CLI-Optionen.

Unter Windows befinden sich dieselben Dateien unter %USERPROFILE%\.aws\.

Standardprofil

Wenn Sie aws configure ohne --profile ausführen, schreibt es Einstellungen für [default]. Die CLI verwendet dieses Profil, wenn Sie kein anderes angeben und keine relevante Umgebungsvariable es überschreibt.

# Beispiel eines Standardprofils in ~/.aws/credentials
[default]
aws_access_key_id = YOUR_DEFAULT_ACCESS_KEY
aws_secret_access_key = YOUR_DEFAULT_SECRET_KEY
# Beispiel eines Standardprofils in ~/.aws/config
[default]
region = us-east-1
output = json

Erstellen benannter Profile

Sie können benannte Profile mit aws configure --profile erstellen:

aws configure --profile dev
aws configure --profile prod

Sie können die Dateien auch direkt bearbeiten. Verwenden Sie einfache Profilnamen in ~/.aws/credentials:

~/.aws/credentials:

[default]
aws_access_key_id = YOUR_DEFAULT_ACCESS_KEY
aws_secret_access_key = YOUR_DEFAULT_SECRET_KEY

[prod]
aws_access_key_id = YOUR_PROD_ACCESS_KEY
aws_secret_access_key = YOUR_PROD_SECRET_KEY

[dev]
aws_access_key_id = YOUR_DEV_ACCESS_KEY
aws_secret_access_key = YOUR_DEV_SECRET_KEY

In ~/.aws/config verwenden benannte Profile das Präfix profile :

~/.aws/config:

[default]
region = us-east-1
output = json

[profile prod]
region = us-west-2
output = text

[profile dev]
region = eu-central-1
output = json

Wichtige Details:

  • Wenn Sie Profile in ~/.aws/config definieren, müssen Sie dem Profilnamen profile voranstellen (z.B. [profile prod]). Dies unterscheidet sich von ~/.aws/credentials, wo Sie nur den Profilnamen verwenden (z.B. [prod]).
  • Das [default]-Profil fungiert nicht automatisch als übergeordnetes Element für benannte Profile. Wenn prod eine Region benötigt, setzen Sie region unter [profile prod] oder geben Sie es auf andere Weise an.

Wechseln zwischen Profilen

Sobald Ihre benannten Profile eingerichtet sind, können Sie sie verwenden, indem Sie die Option --profile mit Ihren AWS CLI-Befehlen angeben.

Beispiel: So listen Sie S3-Buckets in Ihrem Produktionskonto auf:

aws s3 ls --profile prod

Beispiel: So beschreiben Sie EC2-Instanzen in Ihrem Entwicklungskonto:

aws ec2 describe-instances --profile dev

Bevor Sie einen riskanten Befehl ausführen, überprüfen Sie, wer Sie sind:

aws sts get-caller-identity --profile prod

Dies gibt die Konto-ID und ARN für die Anmeldeinformationen zurück, die die CLI verwendet.

Festlegen eines Standardprofils für die Umgebung

Ständiges Tippen von --profile kann mühsam sein. Sie können AWS_PROFILE für Ihre aktuelle Shell-Sitzung setzen.

Linux/macOS:

export AWS_PROFILE=prod

# Jetzt verwenden Befehle standardmäßig das Profil 'prod'
aws s3 ls
aws ec2 describe-instances

Um es zu deaktivieren:

unset AWS_PROFILE

Windows-Eingabeaufforderung:

set AWS_PROFILE=prod

# Jetzt verwenden Befehle standardmäßig das Profil 'prod'
aws s3 ls

Um es zu deaktivieren:

set AWS_PROFILE=

Windows PowerShell:

$env:AWS_PROFILE = "prod"

# Jetzt verwenden Befehle standardmäßig das Profil 'prod'
aws s3 ls

Um es zu deaktivieren:

Remove-Item Env:\AWS_PROFILE

Befehlszeilenoptionen haben eine höhere Priorität als Umgebungsvariablen. Wenn AWS_PROFILE=dev gesetzt ist, Sie aber aws s3 ls --profile prod ausführen, verwendet der Befehl prod.

Verwalten mehrerer AWS-Konten mit Profilen

Profile sind nützlich für:

  • Entwicklung vs. Produktion: Trennung Ihrer Entwicklungs- und Produktionsumgebungen aus Sicherheitsgründen.
  • Verschiedene Teams/Projekte: Isolierung von Ressourcen und Berechtigungen für verschiedene Teams oder Projekte.
  • Kontoübergreifender Zugriff: Wenn Sie als Administrator oder Entwickler Ressourcen in mehreren Konten verwalten müssen.

Best Practice: Verwendung von IAM-Rollen

Vermeiden Sie die Speicherung langlebiger Zugriffsschlüssel für jedes Konto. Ein gängiges Muster ist, ein Quellprofil oder SSO-Profil zu behalten und dann Rollen in Zielkonten zu übernehmen.

Für die Rollenübernahme konfigurieren Sie ein Profil wie folgt:

# ~/.aws/config

[profile dev-role]
role_arn = arn:aws:iam::ACCOUNT_ID:role/ROLE_NAME
source_profile = default
region = us-east-1
output = json

Wenn Sie einen Befehl mit --profile dev-role ausführen, verwendet die CLI das default-Profil, um AWS STS aufzurufen, übernimmt die Rolle und verwendet temporäre Anmeldeinformationen für den Befehl.

Wenn Ihre Organisation IAM Identity Center verwendet, kann Ihr Profil SSO-Einstellungen anstelle von Zugriffsschlüsseln verwenden:

[profile sandbox]
sso_start_url = https://example.awsapps.com/start
sso_region = us-east-1
sso_account_id = 123456789012
sso_role_name = DeveloperAccess
region = us-east-1
output = json

Authentifizieren Sie sich dann mit:

aws sso login --profile sandbox

Erweiterte Konfigurationsoptionen

Über Anmeldeinformationen und Region hinaus können Profile andere AWS CLI-Einstellungen angeben:

  • output: json, text, table
  • region: z.B. us-east-1
  • s3.max_concurrent_requests: Anzahl paralleler Anfragen für S3-Operationen.
  • s3.max_queue_size: Größe der Warteschlange für S3-Multipart-Uploads.
  • cli_binary_format: Wie binäre Parameter in AWS CLI v2 interpretiert werden.

Beispiel: Konfigurieren von S3-Einstellungen für ein bestimmtes Profil

Verwenden Sie aws configure set, um Einrückungsfehler zu vermeiden:

aws configure set s3.max_concurrent_requests 20 --profile s3-optimized
aws configure set s3.max_queue_size 10000 --profile s3-optimized

Dies schreibt S3-Einstellungen unter das Profil in ~/.aws/config:

# ~/.aws/config

[profile s3-optimized]
region = us-east-1
output = json
s3 =
    max_concurrent_requests = 20
    max_queue_size = 10000

Tipps und Best Practices

  • Verwenden Sie beschreibende Profilnamen: Machen Sie Ihre Profilnamen klar und aussagekräftig für das Konto oder die Umgebung, die sie repräsentieren (z.B. prod-admin, dev-web, sandbox-research).
  • Sichern Sie Ihre Anmeldeinformationen: Übergeben Sie Ihre ~/.aws/credentials-Datei niemals an die Versionskontrolle. Verwenden Sie nach Möglichkeit IAM-Rollen für den kontoübergreifenden Zugriff, um die Speicherung langlebiger Zugriffsschlüssel zu vermeiden.
  • Überprüfen Sie regelmäßig Zugriffsschlüssel: Wenn Sie Zugriffsschlüssel verwenden müssen, rotieren Sie sie regelmäßig und deaktivieren Sie alte.
  • Nutzen Sie Umgebungsvariablen: Verwenden Sie AWS_PROFILE für temporäres Umschalten oder für CI/CD-Pipelines, in denen Sie bestimmte Konten ansprechen müssen.
  • Beachten Sie Umgebungsvariablen für Anmeldeinformationen: AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY und AWS_SESSION_TOKEN können Anmeldeinformationen aus Profilen überschreiben. Löschen Sie sie, wenn die CLI scheinbar die falsche Identität verwendet.
  • Benennen Sie Profile nach dem Schadensradius: Namen wie prod-readonly, prod-admin und sandbox-dev sind sicherer als vage Namen wie main oder test.

Praktische Erkenntnisse

Verwenden Sie Profile für jedes Konto und jede Rolle, die Sie häufig verwenden, und überprüfen Sie aws sts get-caller-identity, bevor Sie Produktionsressourcen ändern. Bevorzugen Sie SSO- oder rollenbasierte Profile gegenüber langlebigen Zugriffsschlüsseln, und behalten Sie Umgebungsvariablen im Hinterkopf, wenn ein Befehl scheinbar das falsche Konto anspricht.