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.
Chaîne de fournisseurs d'informations d'identification par défaut dans AWS SDK for Java 2.x
La chaîne de fournisseurs d'informations d'identification par défaut recherche AWS SDK for Java 2.x automatiquement les AWS informations d'identification dans une séquence d'emplacements prédéfinie, ce qui permet aux applications de s'authentifier Services AWS sans spécifier explicitement les sources d'informations d'identification.
La chaîne de fournisseurs d'informations d'identification par défaut est implémentée par la DefaultCredentialsProvider
Pour utiliser la chaîne de fournisseurs d'informations d'identification par défaut pour fournir des informations d'identification temporaires, créez un générateur de clients de services, mais ne spécifiez pas de fournisseur d'informations d'identification. L'extrait de code suivant crée un fichier DynamoDbClient
qui utilise la chaîne de fournisseurs d'informations d'identification par défaut pour localiser et récupérer les paramètres de configuration.
// Any external Region configuration is overridden. // The SDK uses the default credentials provider chain because no specific credentials provider is specified. Region region = Region.US_WEST_2; DynamoDbClient ddb = DynamoDbClient.builder() .region(region) .build();
Ordre de récupération des paramètres d'identification
La chaîne de fournisseurs d'informations d'identification par défaut du SDK for Java 2.x recherche la configuration dans votre environnement à l'aide d'une séquence prédéfinie.
-
Propriétés du système Java
-
Le SDK utilise la SystemPropertyCredentialsProvider
classe pour charger des informations d'identification temporaires à partir des propriétés système aws.accessKeyId
aws.secretAccessKey
,, etaws.sessionToken
Java.Note
Pour plus d'informations sur la façon de définir les propriétés du système Java, consultez le didacticiel sur les propriétés du système
sur le site Web officiel des didacticiels Java.
-
-
Variables d’environnement
-
Le SDK utilise la EnvironmentVariableCredentialsProvider
classe pour charger des informations d'identification temporaires à partir des variables d' AWS_SESSION_TOKEN
environnementAWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
,, et.
-
-
Jeton d'identité Web et ARN du rôle IAM
-
Le SDK utilise la WebIdentityTokenFileCredentialsProvider
classe pour charger les informations d'identification en assumant un rôle à l'aide d'un jeton d'identité Web. -
Le fournisseur d'informations d'identification recherche les variables d'environnement ou les propriétés du système JVM suivantes :
-
AWS_WEB_IDENTITY_TOKEN_FILE or
aws.webIdentityTokenFile
-
AWS_ROLE_ARN
ouaws.roleArn
-
AWS_ROLE_SESSION_NAME
ouaws.roleSessionName
(facultatif)
-
-
Une fois que le SDK a acquis les valeurs, il appelle le AWS Security Token Service (STS) et utilise les informations d'identification temporaires qu'il renvoie pour signer les demandes.
-
Les environnements d'exécution tels qu'Amazon Elastic Kubernetes Service (EKS) mettent automatiquement à disposition des jetons d'identité Web, ce qui permet aux applications d'obtenir des informations AWS SDKs d'identification temporaires. AWS
-
-
Le partage
credentials
et lesconfig
fichiers-
Le SDK utilise le ProfileCredentialsProvider
pour charger les paramètres d'authentification unique ou les informations d'identification temporaires d'IAM Identity Center à partir du [default]
profil dans les fichiers partagéscredentials
et.config
Le guide de référence AWS SDKs and Tools contient des informations détaillées sur la façon dont le SDK for Java fonctionne avec le jeton d'authentification unique IAM Identity Center pour obtenir des informations d'identification temporaires que le SDK utilise pour appeler. Services AWS
Note
Les
config
fichierscredentials
et sont partagés par divers AWS SDKs outils. Pour plus d'informations, consultez le. aws/credentials and .aws/configfichiers du guide de référence AWS SDKs et des outils. -
Comme un profil dans
credentials
lesconfig
fichiers partagés peut contenir de nombreux ensembles de paramètres différents, lesProfileCredentialsProvider
délégués se chargent de rechercher les paramètres sous le[default]
profil à une série d'autres fournisseurs :-
Informations d'identification de base (classe
StaticCredentialsProvider
) : lorsque le profil contientaws_access_key_id
etaws_secret_access_key
. -
Informations d'identification de session (classe
StaticSessionCredentialsProvider
) : lorsque le profil contientaws_access_key_id
aws_secret_access_key
, etaws_session_token
. -
Informations d'identification du processus (classe
ProcessCredentialsProvider
) : lorsque le profil contientcredential_process
. -
Informations d'identification SSO (classe
SsoCredentialsProvider
) : lorsque le profil contient des propriétés liées à l'authentification unique telles que,.sso_role_name
sso_account_id
-
Informations d'identification du jeton d'identité Web (classe
WebIdentityTokenCredentialsProvider
) : lorsque le profil contientrole_arn
etweb_identity_token_file
. -
Informations d'identification basées sur les rôles avec profil source (classe
StsAssumeRoleCredentialsProvider
) : lorsque le profil contientrole_arn
et.source_profile
-
Informations d'identification basées sur les rôles avec source d'informations d'identification (classe
StsAssumeRoleWithSourceCredentialsProvider
) : lorsque le profil contient et.role_arn
credential_source
-
Quand
credential_source = Environment
: il utilise une chaîne deSystemPropertyCredentialsProvider
etEnvironmentVariableCredentialsProvider
-
Quand
credential_source = Ec2InstanceMetadata
: il utiliseInstanceProfileCredentialsProvider
-
Quand
credential_source = EcsContainer
: il utiliseContainerCredentialsProvider
-
-
-
-
Amazon ECS informations d'identification du conteneur
-
Le SDK utilise la ContainerCredentialsProvider
classe pour charger des informations d'identification temporaires à l'aide des variables d'environnement suivantes : -
AWS_CONTAINER_CREDENTIALS_RELATIVE_URI
ouAWS_CONTAINER_CREDENTIALS_FULL_URI
-
AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE
ouAWS_CONTAINER_AUTHORIZATION_TOKEN
-
L'agent de conteneur ECS définit automatiquement la variable d'
AWS_CONTAINER_CREDENTIALS_RELATIVE_URI
environnement, qui pointe vers le point de terminaison des informations d'identification ECS. Les autres variables d'environnement sont généralement définies dans des scénarios spécifiques dans lesquels le point de terminaison d'identification ECS standard n'est pas utilisé. -
-
Amazon EC2 informations d'identification fournies par le rôle IAM de l'instance
-
Le SDK utilise la InstanceProfileCredentialsProvider
classe pour charger des informations d'identification temporaires à partir du service de Amazon EC2 métadonnées.
-
-
Si le SDK ne trouve pas les paramètres de configuration nécessaires au cours de toutes les étapes répertoriées ci-dessus, il génère une exception avec un résultat similaire à ce qui suit :
software.amazon.awssdk.core.exception.SdkClientException: Unable to load credentials from any of the providers in the chain AwsCredentialsProviderChain(credentialsProviders=[SystemPropertyCredentialsProvider(), EnvironmentVariableCredentialsProvider(), WebIdentityTokenCredentialsProvider(), ProfileCredentialsProvider(), ContainerCredentialsProvider(), InstanceProfileCredentialsProvider()])
Utilisez le code DefaultCredentialsProvider
d'entrée
Vous pouvez utiliser explicitement la chaîne de fournisseurs d'informations d'identification par défaut dans votre code. Sur le plan fonctionnel, cela revient à ne pas spécifier du tout de fournisseur d'informations d'identification, puisque le SDK l'utilise DefaultCredentialsProvider
par défaut. Cependant, son utilisation explicite peut rendre votre code plus lisible et plus autodocumenté. Cela montre clairement votre intention d'utiliser la chaîne d'informations d'identification par défaut.
import software.amazon.awssdk.auth.credentials.DefaultCredentialsProvider; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.s3.S3Client; public class ExplicitDefaultCredentialsExample { public static void main(String[] args) { // Explicitly create the DefaultCredentialsProvider. DefaultCredentialsProvider defaultCredentialsProvider = DefaultCredentialsProvider .builder().build(); // Use it with any service client. S3Client s3Client = S3Client.builder() .region(Region.US_WEST_2) .credentialsProvider(defaultCredentialsProvider) .build(); // Now you can use the client with the default credentials chain. s3Client.listBuckets(); } }
Lorsque vous créez le fournisseur d'informations d'identification par défaut, vous pouvez fournir une configuration supplémentaire :
DefaultCredentialsProvider customizedProvider = DefaultCredentialsProvider.builder() .profileName("custom-profile") // Use a specific profile if the chain gets to the `ProfileCredentialsProvider` stage. .asyncCredentialUpdateEnabled(true) // Enable async credential updates. .build();
Cette approche vous donne plus de contrôle tout en vous offrant la commodité de la chaîne d'informations d'identification par défaut.