Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Anmeldeinformationsanbieter
Die Reihenfolge, in der die standardmäßige Anbieterkette für Anmeldeinformationen Anmeldeinformationen auflöst, hat sich mit Version 1.4.0 geändert. Weitere Informationen finden Sie im nachfolgenden Hinweis.
Wenn Sie Anfragen mit dem an Amazon Web Services senden AWS SDK für Kotlin, müssen Anfragen kryptografisch signiert werden, wobei die Anmeldeinformationen von ausgestellt wurden. AWS Das Kotlin SDK signiert die Anfrage automatisch für Sie. Um die Anmeldeinformationen abzurufen, kann das SDK Konfigurationseinstellungen verwenden, die sich an verschiedenen Stellen befinden, z. B. JVM-Systemeigenschaften, Umgebungsvariablen, gemeinsam genutzte credentials Dateien AWS config und Dateien sowie EC2 Amazon-Instance-Metadaten.
Das SDK verwendet die Abstraktion des Anbieters für Anmeldeinformationen, um das Abrufen von Anmeldeinformationen aus verschiedenen Quellen zu vereinfachen. Das SDK enthält mehrere Implementierungen von Credentials Provider.
Wenn die abgerufene Konfiguration beispielsweise IAM Identity Center-Einstellungen für den Single Sign-On-Zugriff aus der gemeinsam genutzten config Datei enthält, ruft das SDK zusammen mit dem IAM Identity Center temporäre Anmeldeinformationen ab, an die es Anfragen sendet. AWS-Services Bei diesem Ansatz zur Erfassung von Anmeldeinformationen verwendet das SDK den IAM Identity Center-Anbieter (auch bekannt als SSO-Anmeldeinformationsanbieter). Im Abschnitt zur Einrichtung dieses Handbuchs wurde diese Konfiguration beschrieben.
Um einen bestimmten Anbieter für Anmeldeinformationen zu verwenden, können Sie einen angeben, wenn Sie einen Service-Client erstellen. Alternativ können Sie die standardmäßige Anbieterkette für Anmeldeinformationen verwenden, um automatisch nach Konfigurationseinstellungen zu suchen.
Die Anbieterkette für Standardanmeldedaten
Wenn es bei der Client-Erstellung nicht explizit angegeben wird, verwendet das SDK für Kotlin einen Anbieter für Anmeldeinformationen, der nacheinander jeden Ort überprüft, an dem Sie Anmeldeinformationen angeben können. Dieser Standardanmeldeanmeldeanbieter ist als eine Kette von Anbietern von Anmeldeinformationen implementiert.
Um die Standardkette für die Bereitstellung von Anmeldeinformationen in Ihrer Anwendung zu verwenden, erstellen Sie einen Dienstclient, ohne explizit eine credentialsProvider Eigenschaft anzugeben.
val ddb = DynamoDbClient { region = "us-east-2" }
Weitere Informationen zur Erstellung von Dienstclients finden Sie unter Konstruieren und Konfigurieren eines Clients.
Erfahren Sie mehr über die Anbieterkette für Standardanmeldedaten
Die standardmäßige Anbieterkette für Anmeldeinformationen sucht anhand der folgenden vordefinierten Reihenfolge nach der Konfiguration von Anmeldeinformationen. Wenn die konfigurierten Einstellungen gültige Anmeldeinformationen bereitstellen, wird die Kette beendet.
- 1. AWS Zugriffstasten (JVM-Systemeigenschaften)
-
Das SDK sucht nach den
aws.sessionTokenJVM-Systemeigenschaftenaws.accessKeyIdaws.secretAccessKey, und. - 2. AWS Zugriffstasten (Umgebungsvariablen)
-
Das SDK versucht, Anmeldeinformationen aus den
AWS_ACCESS_KEY_IDAWS_SESSION_TOKENUmgebungsvariablen und zu laden.AWS_SECRET_ACCESS_KEY - 3. Web-Identitätstoken
-
Das SDK sucht nach den Umgebungsvariablen
AWS_WEB_IDENTITY_TOKEN_FILEund/oderAWS_ROLE_ARN(oder den JVM-Systemeigenschaftenaws.webIdentityTokenFileundaws.roleArn). Basierend auf den Token-Informationen und der Rolle ruft das SDK temporäre Anmeldeinformationen ab. - 4. Ein Profil in einer Konfigurationsdatei
-
In diesem Schritt verwendet das SDK Einstellungen, die einem Profil zugeordnet sind. Standardmäßig verwendet das SDK gemeinsam genutzte
credentialsDateien AWSconfigund Dateien. Wenn dieAWS_CONFIG_FILEUmgebungsvariable jedoch festgelegt ist, verwendet das SDK diesen Wert. Wenn dieAWS_PROFILEUmgebungsvariable (oder dieaws.profileJVM-Systemeigenschaft) nicht gesetzt ist, sucht das SDK nach dem „Standard“ -Profil, andernfalls sucht es nach dem Profil, das demAWS_PROFILE’sWert entspricht.Das SDK sucht auf der Grundlage der im vorherigen Absatz beschriebenen Konfiguration nach dem Profil und verwendet die dort definierten Einstellungen. Wenn die vom SDK gefundenen Einstellungen eine Mischung aus Einstellungen für verschiedene Ansätze von Anmeldeinformationsanbietern enthalten, verwendet das SDK die folgende Reihenfolge:
-
AWS Zugriffstasten (Konfigurationsdatei) — Das SDK verwendet die Einstellungen für
aws_access_key_idaws_access_key_id, und.aws_session_token -
Rollenkonfiguration annehmen — Wenn das SDK
credential_sourceEinstellungensource_profileund/oder findetrole_arn, versucht es, eine Rolle anzunehmen. Wenn das SDK diesource_profileEinstellung findet, bezieht es Anmeldeinformationen aus einem anderen Profil, um temporäre Anmeldeinformationen für die von angegebene Rolle zu erhaltenrole_arn. Wenn das SDK diecredential_sourceEinstellung findet, bezieht es die Anmeldeinformationen je nach Wert dercredential_sourceEinstellung aus einem Amazon ECS-Container, einer EC2 Amazon-Instance oder aus Umgebungsvariablen. Anschließend verwendet es diese Anmeldeinformationen, um temporäre Anmeldeinformationen für die Rolle abzurufen.Ein Profil sollte entweder die
source_profileEinstellung oder diecredential_sourceEinstellung enthalten, aber nicht beides. -
Konfiguration des Web-Identitätstokens — Wenn das SDK
web_identity_token_fileEinstellungen findetrole_arn, ruft es temporäre Anmeldeinformationen für den Zugriff auf AWS Ressourcen ab, die auf demrole_arnund dem Token basieren. -
SSO-Token-Konfiguration — Wenn das SDK
sso_role_nameEinstellungen (zusammen mit einem zugehörigensso-sessionAbschnitt in den Konfigurationsdateien) findetsso_session, ruft das SDK temporäre Anmeldeinformationen vom IAM Identity Center-Dienst ab.sso_account_id -
Legacy-SSO-Konfiguration — Wenn das SDK
sso_role_nameEinstellungensso_start_url,sso_region, und findetsso_account_id, ruft das SDK temporäre Anmeldeinformationen vom IAM Identity Center-Dienst ab. -
Anmeldekonfiguration — Wenn das SDK eine
login_sessionEinstellung findet, verwendet es die temporären Anmeldeinformationen aus der Anmeldesitzung oder versucht, sie zu aktualisieren, wenn sie in weniger als 5 Minuten ablaufen. Informationen zum Starten einer Anmeldesitzung finden Sie im AWS CLI-Benutzerhandbuch. -
Prozesskonfiguration — Wenn das SDK eine
credential_processEinstellung findet, verwendet es den Pfadwert, um einen Prozess aufzurufen und temporäre Anmeldeinformationen abzurufen.
-
- 5. Anmeldeinformationen für den Container
-
Das SDK sucht nach Umgebungsvariablen
AWS_CONTAINER_CREDENTIALS_RELATIVE_URIoderAWS_CONTAINER_CREDENTIALS_FULL_URIundAWS_CONTAINER_AUTHORIZATION_TOKEN_FILEoderAWS_CONTAINER_AUTHORIZATION_TOKEN. Es verwendet diese Werte, um Anmeldeinformationen über eine GET-Anfrage vom angegebenen HTTP-Endpunkt zu laden. - 6. IMDS-Anmeldeinformationen
-
Das SDK versucht, Anmeldeinformationen vom Instanz-Metadatendienst auf dem standardmäßigen oder konfigurierten HTTP-Endpunkt abzurufen. Das SDK unterstützt IMDSv2nur.
Wenn die Anmeldeinformationen zu diesem Zeitpunkt immer noch nicht geklärt sind, schlägt die Client-Erstellung mit einer Ausnahme fehl.
Hinweis: Ändern Sie die Reihenfolge der Auflösung der Anmeldeinformationen
Die oben beschriebene Reihenfolge der Auflösung von Anmeldeinformationen ist für die 1.4.x+ Veröffentlichung des SDK für Kotlin aktuell. Vor der 1.4.0 Veröffentlichung wurden die Elemente Nummer 3 und 4 vertauscht, und das aktuelle 4a-Element folgte auf das aktuelle 4g-Element.
Geben Sie einen Anbieter für Anmeldeinformationen an
Sie können einen Anbieter für Anmeldeinformationen angeben, anstatt die Standardanbieterkette zu verwenden. Dieser Ansatz gibt Ihnen direkte Kontrolle darüber, welche Anmeldeinformationen das SDK verwendet.
Um beispielsweise die Anmeldeinformationen für eine angenommene IAM-Rolle zu verwenden, geben Sie StsAssumeRoleCredentialsProvider bei der Erstellung des Clients Folgendes an:
val ddb = DynamoDbClient { region = "us-east-1" credentialsProvider = StsAssumeRoleCredentialsProvider() }
Sie können auch eine benutzerdefinierte Kette (CredentialsProviderChain) erstellen, die mehrere Anbieter in Ihrer bevorzugten Reihenfolge kombiniert.
Anmeldeinformationen bei einem eigenständigen Anbieter zwischenspeichern
Wichtig
In der Standardkette werden Anmeldeinformationen automatisch zwischengespeichert. Eigenständige Anbieter speichern Anmeldeinformationen nicht im Cache. Um zu vermeiden, dass bei jedem API-Aufruf Anmeldeinformationen abgerufen werden, umschließen Sie Ihren Anbieter mit einemCachedCredentialsProvider. Der zwischengespeicherte Anbieter ruft neue Anmeldeinformationen nur ab, wenn die aktuellen ablaufen.
Verwenden Sie die Klasse, um Anmeldeinformationen bei einem eigenständigen Anbieter zwischenzuspeichernCachedCredentialsProvider:
val ddb = DynamoDbClient { region = "us-east-1" credentialsProvider = CachedCredentialsProvider(StsAssumeRoleCredentialsProvider()) }
Verwenden Sie alternativ die cached() Erweiterungsfunktion für präziseren Code:
val ddb = DynamoDbClient { region = "us-east-1" credentialsProvider = StsAssumeRoleCredentialsProvider().cached() }