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.
Pour envoyer des demandes à Amazon Web Services à l'aide du Kit AWS SDK pour Kotlin, le SDK utilise des informations d'identification signées cryptographiquement émises par. AWS 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.accessKeyId
aws.secretAccessKey
, et du systèmeaws.sessionToken
JVM. - 2. AWS clés d'accès (variables d'environnement)
-
Le SDK tente de charger les informations d'identification à partir
AWS_ACCESS_KEY_ID
des variablesAWS_SECRET_ACCESS_KEY
d'AWS_SESSION_TOKEN
environnement et. - 3. Jeton d'identité Web
-
Le SDK recherche les variables
AWS_WEB_IDENTITY_TOKEN_FILE
d'environnement et/ouAWS_ROLE_ARN
(ou les propriétés du système JVMaws.webIdentityTokenFile
etaws.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
config
etcredentials
les fichiers, mais si la variable d'AWS_CONFIG_FILE
environnement est définie, le SDK utilise cette valeur. Si la variable d'AWS_PROFILE
environnement (ou la propriété du systèmeaws.profile
JVM) 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_id
aws_access_key_id
, etaws_session_token
. -
Assumer la configuration des rôles : si le SDK trouve
role_arn
source_profile
et/ou descredential_source
paramètres, il tente d'assumer un rôle. Si le SDK trouve lesource_profile
paramè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_source
paramè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_source
paramè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_profile
paramètre ou lecredential_source
paramètre, mais pas les deux. -
Configuration du jeton d'identité Web : si le SDK trouve
role_arn
et définitweb_identity_token_file
les paramètres, il acquiert des informations d'identification temporaires pour accéder aux AWS ressources en fonction du jetonrole_arn
et du jeton. -
Configuration du jeton SSO : si le SDK trouve
sso_session
dessso_role_name
paramètres (ainsi qu'unesso-session
section 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_name
les paramètressso_region
sso_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_process
paramè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_URI
ou ouAWS_CONTAINER_CREDENTIALS_FULL_URI
.AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE
AWS_CONTAINER_AUTHORIZATION_TOKEN
Il 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 prend uniquement en charge IMDSv2.
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.
Fournisseur d'informations d'identification explicite
Au lieu d'utiliser la chaîne de fournisseurs par défaut, vous pouvez spécifier un fournisseur d'informations d'identification spécifique ou une chaîne personnalisée (CredentialsProviderChain
) que le SDK doit utiliser. Par exemple, si vous définissez les informations d'identification par défaut à l'aide de variables d'environnement, fournissez un EnvironmentCredentialsProvider
au générateur de clients, comme dans l'extrait de code suivant.
val ddb = DynamoDbClient { region = "us-east-1" credentialsProvider = EnvironmentCredentialsProvider() }
Note
La chaîne par défaut met en cache les informations d'identification, mais pas les fournisseurs autonomes. Vous pouvez encapsuler n'importe quel fournisseur d'informations d'identification à l'aide CachedCredentialsProvider
de la classe pour éviter de récupérer inutilement des informations d'identification à chaque appel d'API. Le fournisseur mis en cache ne récupère les nouvelles informations d'identification que lorsque les informations actuelles expirent.
Note
Vous pouvez implémenter votre propre fournisseur d'informations d'identification ou votre propre chaîne de fournisseurs en implémentant l'CredentialsProvider
interface.