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/credentialsfür Zugriffsschlüssel und Sitzungsanmeldeinformationen.~/.aws/configfü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/configdefinieren, müssen Sie dem Profilnamenprofilevoranstellen (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. Wennprodeine Region benötigt, setzen Sieregionunter[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,tableregion: z.B.us-east-1s3.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_PROFILEfü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_KEYundAWS_SESSION_TOKENkö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-adminundsandbox-devsind sicherer als vage Namen wiemainodertest.
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.