Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Fournisseurs d'informations d'identification
L'ordre dans lequel la chaîne de fournisseurs d'informations d'identification par défaut résout les informations d'identification a changé avec la version 1.4.0. Pour plus de détails, consultez la note ci-dessous.
Lorsque vous envoyez des demandes à Amazon Web Services à l'aide du AWS SDK pour Kotlin, les demandes doivent être signées de manière cryptographique à l'aide des informations d'identification émises par AWS. Le SDK Kotlin signe automatiquement la demande pour vous. Pour obtenir les informations d'identification, le SDK peut utiliser des paramètres de configuration situés à plusieurs endroits, par exemple les propriétés du système JVM, les variables d'environnement, credentials les fichiers partagés AWS config et les métadonnées des EC2 instances Amazon.
Le SDK utilise l'abstraction du fournisseur d'informations d'identification pour simplifier le processus de récupération des informations d'identification à partir de diverses sources. Le SDK contient plusieurs implémentations de fournisseurs d'informations d'identification.
Par exemple, si la configuration récupérée inclut les paramètres d'accès à authentification unique IAM Identity Center à partir du config fichier partagé, le SDK travaille avec le IAM Identity Center pour récupérer les informations d'identification temporaires qu'il utilise pour effectuer une demande. Services AWS Dans le cadre de cette approche d'acquisition d'informations d'identification, le SDK utilise le fournisseur IAM Identity Center (également connu sous le nom de fournisseur d'informations d'identification SSO). La section de configuration de ce guide décrit cette configuration.
Pour utiliser un fournisseur d'informations d'identification spécifique, vous pouvez en spécifier un lorsque vous créez un client de service. Vous pouvez également utiliser la chaîne de fournisseurs d'informations d'identification par défaut pour rechercher automatiquement les paramètres de configuration.
La chaîne de fournisseurs d'informations d'identification par défaut
Lorsqu'il n'est pas explicitement spécifié lors de la construction du client, le SDK pour Kotlin utilise un fournisseur d'informations d'identification qui vérifie séquentiellement chaque endroit où vous pouvez fournir des informations d'identification. Ce fournisseur d'informations d'identification par défaut est implémenté sous la forme d'une chaîne de fournisseurs d'informations d'identification.
Pour utiliser la chaîne par défaut pour fournir des informations d'identification dans votre application, créez un client de service sans fournir explicitement de credentialsProvider propriété.
val ddb = DynamoDbClient { region = "us-east-2" }
Pour plus d'informations sur la création d'un client de service, consultez la section Création et configuration d'un client.
En savoir plus sur la chaîne de fournisseurs d'informations d'identification par défaut
La chaîne de fournisseurs d'informations d'identification par défaut recherche la configuration des informations d'identification à l'aide de la séquence prédéfinie suivante. Lorsque les paramètres configurés fournissent des informations d'identification valides, la chaîne s'arrête.
- 1. AWS clés d'accès (propriétés du système JVM)
-
Le SDK recherche les propriétés
aws.accessKeyIdaws.secretAccessKey, et du systèmeaws.sessionTokenJVM. - 2. AWS clés d'accès (variables d'environnement)
-
Le SDK tente de charger les informations d'identification à partir
AWS_ACCESS_KEY_IDdes variablesAWS_SECRET_ACCESS_KEYd'AWS_SESSION_TOKENenvironnement et. - 3. Jeton d'identité Web
-
Le SDK recherche les variables
AWS_WEB_IDENTITY_TOKEN_FILEd'environnement et/ouAWS_ROLE_ARN(ou les propriétés du système JVMaws.webIdentityTokenFileetaws.roleArn). Sur la base des informations du jeton et du rôle, le SDK acquiert des informations d'identification temporaires. - 4. Un profil dans un fichier de configuration
-
Dans cette étape, le SDK utilise les paramètres associés à un profil. Par défaut, le SDK utilise le partage AWS
configetcredentialsles fichiers, mais si la variable d'AWS_CONFIG_FILEenvironnement est définie, le SDK utilise cette valeur. Si la variable d'AWS_PROFILEenvironnement (ou la propriété du systèmeaws.profileJVM) n'est pas définie, le SDK recherche le profil « par défaut », sinon il recherche le profil correspondantAWS_PROFILE’sà la valeur.Le SDK recherche le profil en fonction de la configuration décrite dans le paragraphe précédent et utilise les paramètres qui y sont définis. Si les paramètres trouvés par le SDK contiennent une combinaison de paramètres correspondant à différentes approches de fourniture d'informations d'identification, le SDK utilise l'ordre suivant :
-
AWS clés d'accès (fichier de configuration) - Le SDK utilise les paramètres pour
aws_access_key_idaws_access_key_id, etaws_session_token. -
Assumer la configuration des rôles : si le SDK trouve
role_arnsource_profileet/ou descredential_sourceparamètres, il tente d'assumer un rôle. Si le SDK trouve lesource_profileparamètre, il utilise les informations d'identification d'un autre profil pour recevoir des informations d'identification temporaires pour le rôle spécifié parrole_arn. Si le SDK trouve lecredential_sourceparamètre, il extrait les informations d'identification d'un conteneur Amazon ECS, d'une EC2 instance Amazon ou de variables d'environnement en fonction de la valeur ducredential_sourceparamètre. Il utilise ensuite ces informations d'identification pour acquérir des informations d'identification temporaires pour le rôle.Un profil doit contenir le
source_profileparamètre ou lecredential_sourceparamètre, mais pas les deux. -
Configuration du jeton d'identité Web : si le SDK trouve
role_arnet définitweb_identity_token_fileles paramètres, il acquiert des informations d'identification temporaires pour accéder aux AWS ressources en fonction du jetonrole_arnet du jeton. -
Configuration du jeton SSO : si le SDK trouve
sso_sessiondessso_role_nameparamètres (ainsi qu'unesso-sessionsection associée dans les fichiers de configuration), le SDK récupère les informations d'identification temporaires auprès du service IAM Identity Center.sso_account_id -
Configuration SSO héritée : si le SDK trouve
sso_start_url,, et définitsso_role_nameles paramètressso_regionsso_account_id, il récupère les informations d'identification temporaires auprès du service IAM Identity Center. -
Configuration du processus : si le SDK trouve un
credential_processparamètre, il utilise la valeur du chemin pour appeler un processus et obtenir des informations d'identification temporaires.
-
- 5. Informations d'identification du conteneur
-
Le SDK recherche les variables d'environnement
AWS_CONTAINER_CREDENTIALS_RELATIVE_URIou ouAWS_CONTAINER_CREDENTIALS_FULL_URI.AWS_CONTAINER_AUTHORIZATION_TOKEN_FILEAWS_CONTAINER_AUTHORIZATION_TOKENIl utilise ces valeurs pour charger les informations d'identification depuis le point de terminaison HTTP spécifié via une requête GET. - 6. Informations d'identification IMDS
-
Le SDK tente de récupérer les informations d'identification auprès du service de métadonnées d'instance sur le point de terminaison HTTP par défaut ou configuré. Le SDK ne prend en charge IMDSv2que.
Si les informations d'identification ne sont toujours pas résolues à ce stade, la création du client échoue avec une exception.
Remarque : Modification de l'ordre de résolution des informations d'identification
L'ordre de résolution des informations d'identification décrit ci-dessus est en vigueur pour la 1.4.x+ sortie du SDK pour Kotlin. Avant la 1.4.0 sortie, les articles numéros 3 et 4 ont été échangés et l'élément 4a actuel a suivi l'élément 4f actuel.
Spécifier un fournisseur d'informations d'identification
Vous pouvez spécifier un fournisseur d'informations d'identification au lieu d'utiliser la chaîne de fournisseurs par défaut. Cette approche vous permet de contrôler directement les informations d'identification utilisées par le SDK.
Par exemple, pour utiliser les informations d'identification d'un rôle IAM supposé, spécifiez un StsAssumeRoleCredentialsProvider lorsque vous créez le client :
val ddb = DynamoDbClient { region = "us-east-1" credentialsProvider = StsAssumeRoleCredentialsProvider() }
Vous pouvez également créer une chaîne personnalisée (CredentialsProviderChain) qui combine plusieurs fournisseurs dans votre commande préférée.
Mettre en cache les informations d'identification auprès d'un fournisseur autonome
Important
La chaîne par défaut met automatiquement en cache les informations d'identification. Les fournisseurs autonomes ne mettent pas en cache les informations d'identification. Pour éviter de récupérer les informations d'identification à chaque appel d'API, associez à votre fournisseur unCachedCredentialsProvider. Le fournisseur mis en cache récupère les nouvelles informations d'identification uniquement lorsque les informations actuelles expirent.
Pour mettre en cache les informations d'identification auprès d'un fournisseur autonome, utilisez la CachedCredentialsProvider classe :
val ddb = DynamoDbClient { region = "us-east-1" credentialsProvider = CachedCredentialsProvider(StsAssumeRoleCredentialsProvider()) }
Vous pouvez également utiliser la fonction d'cached()extension pour un code plus concis :
val ddb = DynamoDbClient { region = "us-east-1" credentialsProvider = StsAssumeRoleCredentialsProvider().cached() }