Knowledge Center Monthly Newsletter - March 2025
Stay up to date with the latest from the Knowledge Center. See all new and updated Knowledge Center articles published in the last month and re:Post’s top contributors.
Wie kann ich den AWS-STS-Fehler „the security token included in the request is expired“ beheben, wenn ich die AWS CLI verwende, um eine IAM-Rolle zu übernehmen?
Ich habe versucht, mithilfe der AWS Command Line Interface (AWS CLI) eine Rolle im AWS Identity and Access Management (IAM, Identitäts- und Zugriffsmanagement) zu übernehmen. Ich habe die Fehlermeldung „security token included in the request is expired“ erhalten.
Kurzbeschreibung
Temporäre Sicherheitsanmeldeinformationen für IAM-Benutzer werden mithilfe des Service AWS Security Token Service (AWS STS) angefordert. Temporäre Anmeldeinformationen, die mit der API-Aktion AssumeRole erstellt wurden, sind standardmäßig eine Stunde lang gültig. Nach Ablauf der temporären Anmeldeinformationen können sie nicht wiederverwendet werden. Weitere Informationen finden Sie unter Temporäre Sicherheitsanmeldeinformationen in IAM.
Lösung
Befolgen Sie die folgenden Schritte zur Fehlerbehebung für Ihren Anwendungsfall.
Hinweis: Wenn Sie beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen Fehlermeldungen erhalten, finden Sie weitere Informationen dazu unter Problembehandlung bei der AWS CLI. Stellen Sie außerdem sicher, dass Sie die neueste Version von AWS CLI verwenden.
Stellen Sie sicher, dass die temporären Anforderungen für Sicherheitsanmeldeinformationen AWS-Endpunkte erreichen können
Für die Einrichtung der Anmeldeinformationen für eine Rolle sind eine Zugriffsschlüssel-ID, ein geheimer Zugriffsschlüssel und ein Sitzungstoken erforderlich. Gesendete Anforderungen müssen den AWS-Endpunkt innerhalb von fünf Minuten nach dem Zeitstempel auf der Anforderung erreichen. Andernfalls wird die Anforderung abgelehnt. Weitere Informationen finden Sie unter Warum Anforderungen signiert werden.
Verwendung von Profilen zur Übernahme einer IAM-Rolle
Ein benanntes Profil ist eine Sammlung von Einstellungen und Anmeldeinformationen, die Sie auf einen AWS CLI-Befehl anwenden können. Stellen Sie sicher, dass Sie die richtigen Anmeldeinformationen verwenden.
Der folgende AWS CLI-Befehl verwendet die Anmeldeinformationen des Standardprofils:
aws s3 ls
Dieser Beispielbefehl verwendet die in der Datei .config konfigurierten Anmeldeinformationen für das Profil project1:
aws s3 ls --profile project1
Beispielausgabe mit abgelaufenen Anmeldeinformationen:
"An error occurred (ExpiredToken) when calling the ListBuckets operation: The provided token has expired."
Diese Profile sind in Ihrem .aws-Ordner definiert, der die Anmeldeinformationen und .config-Dateien enthält.
Die Konfigurationsdatei befindet sich unter ~/.aws/config für Linux/macOS und unter C:\Users\%USERPROFILE%\.aws\config für Windows. Die Datei mit den Anmeldeinformationen befindet sich unter ~/.aws/credentials für Linux/macOS und unter C:\Users\%USERPROFILE%\.aws\credentialsfür Windows.
Führen Sie den folgenden Befehl aus, um die Anmeldeinformationen für Ihr Standardprofil zu überprüfen:
aws configure list --profile default
Beispielausgabe:
Name Value Type Location ---- ----- ---- -------- profile default manual —profile access_key TGN7 shared-credentials-file secret_key SbXb shared-credentials-file region us-east-1 config-file ~/.aws/config
Führen Sie den folgenden Befehl aus, um sich zu vergewissern, dass dieselben Anmeldeinformationen für das Profil project1 verwendet werden:
aws configure list --profile project1
Beispielausgabe:
Name Value Type Location ---- ----- ---- -------- profile project1 manual —profile access_key QN2X config-file secret_key LPYI config-file region eu-west-1 config-file ~/.aws/config
Beachten Sie in der Beispielausgabe, dass für das Standardprofil und das Profil project1 möglicherweise unterschiedliche Anmeldeinformationen konfiguriert werden.
Sie können in der Datei .aws/config ein Profil im folgenden Format erstellen:
[profile project1] region = eu-west-1 aws_access_key_id = <access-Key-for-an-IAM-role> aws_secret_access_key = <secret-access-Key-for-an-IAM-role> aws_session_token = <session-token>
Diese Anmeldeinformationen werden Ihnen zur Verfügung gestellt, wenn Sie den AWS STS-Befehl assume-role ähnlich dem folgenden ausführen:
aws sts assume-role --role-arn arn:aws:iam::<account-number>:role/Prod-Role --role-session-name environment-prod
Beispielausgabe:
{ "AssumedRoleUser": { "AssumedRoleId": "AROAXXXXXXXXXXXX:environment-prod", "Arn": "arn:aws:sts::<account-number>:assumed-role/Prod-Role/environment-prod" }, "Credentials": { "SecretAccessKey": "<secret-access-Key-for-an-IAM-role>, "SessionToken": "<session-token>", "Expiration": "2020-03-31T17:17:53Z", "AccessKeyId": "<access-Key-for-an-IAM-role>" }
Hinweis: Sie können den maximalen Ablauf der Sitzungsdauer für temporäre Anmeldeinformationen für IAM-Rollen mithilfe des DurationSeconds-Parameters für Ihren Anwendungsfall erhöhen.
Der neue API-Aufruf assume-role ruft dann einen neuen Satz gültiger Anmeldeinformationen ab. Nach dem API-Aufruf müssen Sie die Datei ~/.aws/config manuell mit den neuen temporären Anmeldeinformationen aktualisieren.
Sie können vermeiden, die Konfigurationsdatei jedes Mal zu aktualisieren, wenn eine Sitzung abläuft. Definieren Sie ein Profil für die IAM-Rolle zusammen mit dem Benutzer, der die Rolle übernimmt, in der Datei ~/.aws/config oder ~/.aws/credentials, ähnlich dem folgenden:
[profile project1] role_arn = <arn-of-IAM-role> source_profile = user1 region = <region>
Beachten Sie, dass user1 in der Datei ~/.aws/credentials in etwa wie folgt definiert ist:
[user1] aws_access_key_id=AKIAIOSFODNN7EXAMPLE aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Wenn Sie source_profile definieren, müssen Sie die temporären Anmeldeinformationen in der Datei ~/.aws/config oder ~/.aws/credentials nicht aktualisieren.
Der folgende AWS CLI-Befehl listet die Amazon Simple Storage Service (Amazon S3)-Buckets mit Anmeldeinformationen für user1 auf, die sich in der Datei ~/.aws/credentials befinden.
aws s3 ls --profile project1
Wenn Sie die AWS CLI mit einem source_profile-Element verwenden, fügt der API-Aufruf „assume-role“ Anmeldeinformationen in die Datei .aws/cli/cache ein. Abgelaufene Anmeldeinformationen werden automatisch in der Datei .aws/cli/cache aktualisiert. Wenn Sie eine Fehlermeldung für abgelaufene Anmeldeinformationen erhalten, können Sie den Cache mit den folgenden Befehlen leeren:
Linux/macOS:
$ rm -r ~/.aws/cli/cache
Windows:
C:\> del /s /q %UserProfile%\.aws\cli\cache
Die AWS CLI erstellt neue Anmeldeinformationen im Cache.
Erstellen Sie Umgebungsvariablen, um die IAM-Rolle zu übernehmen und den Zugriff zu überprüfen
Sie können Anmeldeinformationen für die IAM-Rolle verwenden, um drei Umgebungsvariablen zu erstellen, um so die IAM-Rolle zu übernehmen, die der folgenden ähnelt:
Linux/macOS:
export AWS_ACCESS_KEY_ID=RoleAccessKeyID export AWS_SECRET_ACCESS_KEY=RoleSecretKey export AWS_SESSION_TOKEN=RoleSessionToken
Windows:
C:\> setx AWS_ACCESS_KEY_ID RoleAccessKeyID C:\> setx AWS_SECRET_ACCESS_KEY RoleSecretKey C:\> setx AWS_SESSION_TOKEN RoleSessionToken
Führen Sie den folgenden Befehl aus, um zu überprüfen, ob Sie die richtige IAM-Rolle übernommen haben:
aws sts get-caller-identity
Der Befehl get-caller-identity zeigt Informationen zur IAM-Identität an, die zur Authentifizierung der Anforderung verwendet werden. Weitere Informationen finden Sie unter Wie übernehme ich mit der AWS CLI eine IAM-Rolle?
Umgebungsvariablen enthalten temporäre zwischengespeicherte Anmeldeinformationen, auch wenn sie abgelaufen sind und nicht automatisch erneuert werden. Verwenden Sie die folgenden Befehle, um zu überprüfen, ob Umgebungsvariablen für Anmeldeinformationen gesetzt sind:
Linux/macOS:
$ printenv | grep AWS
Windows:
C:\>set AWS
Sie können abgelaufene Umgebungsvariablen mit den folgenden Befehlen entfernen:
Linux/macOS:
$ unset AWS_ACCESS_KEY_ID $ unset AWS_SECRET_ACCESS_KEY $ unset AWS_SESSION_TOKEN
Windows:
C:\>set AWS_ACCESS_KEY_ID= C:\>set AWS_SECRET_ACCESS_KEY= C:\>set AWS_SESSION_TOKEN=
Sie können jetzt erneut den API-Aufruf „assume-role“ verwenden, um neue, gültige Anmeldeinformationen abzurufen und die Umgebungsvariablen erneut festzulegen.
Wichtig:Die Dateien.aws/credentials und .aws/config enthalten Anmeldeinformationen für Ihre IAM-Entitäten. Stellen Sie bei der Verwaltung der Anmeldeinformationen sicher, dass Sie die bewährten Sicherheitsmethoden in IAM befolgen.
Ähnliche Informationen

Relevanter Inhalt
- AWS OFFICIALAktualisiert vor 5 Monaten
- AWS OFFICIALAktualisiert vor 2 Jahren
- AWS OFFICIALAktualisiert vor 4 Monaten
- AWS OFFICIALAktualisiert vor 9 Monaten