La AWS SDK for Java version 1.x est entrée en mode maintenance le 31 juillet 2024 et atteindra end-of-support
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.
Fournissez des informations d'identification temporaires au AWS SDK for Java
Pour faire des demandes à Amazon Web Services, vous devez fournir des informations d'identification AWS temporaires AWS SDK for Java à utiliser lorsqu'il appelle les services. Vous pouvez effectuer cette opération de différentes manières :
-
Utilisez la chaîne de fournisseur d'informations d'identification par défaut (recommandé).
-
Utilisez un fournisseur ou une chaîne de fournisseur d'informations d'identification spécifique (ou créez le vôtre).
-
Fournissez vous-même les informations d'identification temporaires sous forme de code.
Utilisation de la chaîne de fournisseur d'informations d'identification par défaut
Lorsque vous initialisez un nouveau client de service sans fournir d'arguments, il AWS SDK for Java tente de trouver des informations d'identification temporaires en utilisant la chaîne de fournisseurs d'informations d'identification par défaut implémentée par la classe D. efaultAWSCredentials ProviderChain La chaîne de fournisseur d'informations d'identification par défaut recherche les informations d'identification dans l'ordre suivant :
-
Variables d'environnement -
AWS_ACCESS_KEY_ID
,AWS_SECRET_KEY
ouAWS_SECRET_ACCESS_KEY
, etAWS_SESSION_TOKEN
. AWS SDK for Java Utilise la EnvironmentVariableCredentialsProviderclasse pour charger ces informations d'identification. -
Propriétés du système Java -
aws.accessKeyId
,aws.secretKey
(mais pasaws.secretAccessKey
), etaws.sessionToken
. AWS SDK for Java utilise le SystemPropertiesCredentialsProviderpour charger ces informations d'identification. -
Informations d'identification du jeton d'identité web à partir de l'environnement ou du conteneur.
-
Le fichier de profils d'identification par défaut, généralement situé dans
~/.aws/credentials
(l'emplacement peut varier selon la plate-forme), et partagé par de nombreux AWS SDKs et par le AWS CLI. AWS SDK for Java utilise le ProfileCredentialsProviderpour charger ces informations d'identification.Vous pouvez créer un fichier d'informations d'identification à l'aide de la
aws configure
commande fournie par le AWS CLI, ou vous pouvez le créer en modifiant le fichier à l'aide d'un éditeur de texte. Pour plus d'informations sur le format de fichier d'informations d'identification, voir Format de fichier AWS d'informations d'identification. -
Informations d'identification du ECS conteneur Amazon : chargées depuis Amazon ECS si la variable d'environnement
AWS_CONTAINER_CREDENTIALS_RELATIVE_URI
est définie. AWS SDK for Java utilise le ContainerCredentialsProviderpour charger ces informations d'identification. Vous pouvez spécifier l'adresse IP de cette valeur. -
Informations d'identification du profil d'instance : utilisées sur les EC2 instances et fournies via le service de Amazon EC2 métadonnées. AWS SDK for Java utilise le InstanceProfileCredentialsProviderpour charger ces informations d'identification. Vous pouvez spécifier l'adresse IP de cette valeur.
Note
Les informations d'identification de profil d'instance sont utilisées uniquement si la variable d'environnement
AWS_CONTAINER_CREDENTIALS_RELATIVE_URI
n'est pas définie. Voir EC2ContainerCredentialsProviderWrapperpour plus d'informations.
Définissez des informations d'identification temporaires
Pour pouvoir utiliser des informations d'identification AWS temporaires, elles doivent être définies dans au moins l'un des emplacements précédents. Pour plus d'informations sur la définition des informations d'identification, consultez les rubriques suivantes :
-
Pour spécifier les informations d'identification dans l'environnement ou dans le fichier de profils d'identification par défaut, consultezConfigurer les informations d'identification temporaires sous.
-
Pour définir les propriétés système Java, consultez le didacticiel System Properties
sur le site web Java Tutorials officiel. -
Pour configurer et utiliser les informations d'identification du profil d'instance avec vos EC2 instances, consultez la section Utiliser IAM des rôles pour accorder l'accès aux AWS ressources sur Amazon EC2.
Définir un autre profil d'identification
AWS SDK for Java Utilise le profil par défaut, mais il existe des moyens de personnaliser le profil qui provient du fichier d'informations d'identification.
Vous pouvez utiliser la variable d'environnement AWS Profile pour modifier le profil chargé par leSDK.
Par exemple, sous Linux, macOS ou Unix, vous devez exécuter la commande suivante pour modifier le profil en myProfile.
export AWS_PROFILE="myProfile"
Sous Windows, utilisez la commande suivante.
set AWS_PROFILE="myProfile"
La définition de la variable d'AWS_PROFILE
environnement affecte le chargement des informations d'identification pour tous les outils officiellement pris en charge AWS SDKs (y compris le AWS CLI et le AWS Tools for Windows PowerShell). Pour modifier uniquement le profil d'une application Java, vous pouvez utiliser la propriété système à la aws.profile
place.
Note
La variable d'environnement est prioritaire sur la propriété système.
Définir un autre emplacement pour le fichier d'informations d'identification
AWS SDK for Java Charge automatiquement les informations d'identification AWS temporaires à partir de l'emplacement du fichier d'informations d'identification par défaut. Cependant, vous pouvez également spécifier l'emplacement en définissant la variable d'environnement AWS_CREDENTIAL_PROFILES_FILE
avec le chemin d'accès complet au fichier d'informations d'identification.
Vous pouvez utiliser cette fonctionnalité pour modifier temporairement l'emplacement où AWS SDK for Java recherche votre fichier d'informations d'identification (par exemple, en définissant cette variable avec la ligne de commande). Vous pouvez également définir la variable d'environnement dans votre environnement utilisateur ou système pour modifier l'emplacement pour l'utilisateur ou l'ensemble du système.
Pour remplacer l'emplacement du fichier d'informations d'identification par défaut
-
Définissez la variable d'
AWS_CREDENTIAL_PROFILES_FILE
environnement sur l'emplacement de votre fichier AWS d'informations d'identification.-
Sous Linux, macOS ou Unix, utilisez :
export AWS_CREDENTIAL_PROFILES_FILE=path/to/credentials_file
-
Sous Windows, utilisez :
set AWS_CREDENTIAL_PROFILES_FILE=path/to/credentials_file
-
Credentials
format de fichier
En suivant les instructions de la section Configuration de base de ce guide, votre fichier d'informations d'identification doit avoir le format de base suivant.
[default] aws_access_key_id=
<value from AWS access portal>
aws_secret_access_key=<value from AWS access portal>
aws_session_token=<value from AWS access portal>
[profile2] aws_access_key_id=<value from AWS access portal>
aws_secret_access_key=<value from AWS access portal>
aws_session_token=<value from AWS access portal>
Le nom de profil est spécifié entre crochets (par exemple, [default]
), suivi par les champs configurables de ce profil sous la forme de paires clé-valeur. Vous pouvez avoir plusieurs profils dans votre credentials
fichier, qui peuvent être ajoutés ou modifiés en aws configure --profile
PROFILE_NAME
sélectionnant le profil à configurer.
Vous pouvez spécifier des champs supplémentaires, tels quemetadata_service_timeout
, etmetadata_service_num_attempts
. Ils ne sont pas configurables CLI avec le. Vous devez modifier le fichier manuellement si vous souhaitez les utiliser. Pour plus d'informations sur le fichier de configuration et les champs disponibles, consultez la section Configuration du AWS Command Line Interface dans le guide de AWS Command Line Interface l'utilisateur.
Charger les identifiants
Une fois que vous avez défini des informations d'identification temporaires, SDK elles sont chargées en utilisant la chaîne de fournisseurs d'informations d'identification par défaut.
Pour ce faire, vous instanciez un Service AWS client sans fournir explicitement d'informations d'identification au générateur, comme suit.
AmazonS3 s3Client = AmazonS3ClientBuilder.standard() .withRegion(Regions.US_WEST_2) .build();
Spécifiez un fournisseur d'informations d'identification ou une chaîne de fournisseurs
Vous pouvez spécifier un fournisseur d'informations d'identification autre que la chaîne de fournisseur d'informations d'identification par défaut à l'aide du générateur client.
Vous fournissez une instance d'un fournisseur d'informations d'identification ou d'une chaîne de fournisseurs à un générateur de clients qui prend une AWSCredentialsProviderinterface en entrée. L'exemple suivant montre comment utiliser des informations d'identification d'environnement.
AmazonS3 s3Client = AmazonS3ClientBuilder.standard() .withCredentials(new EnvironmentVariableCredentialsProvider()) .build();
Pour la liste complète des fournisseurs d'informations d'identification et des chaînes de fournisseurs AWS SDK for Java fournis, voir Toutes les classes d'implémentation connues dans. AWSCredentialsProvider
Note
Vous pouvez utiliser cette technique pour fournir des fournisseurs d'informations d'identification ou des chaînes de fournisseurs que vous créez en utilisant votre propre fournisseur d'informations d'identification qui implémente l'AWSCredentialsProvider
interface, ou en sous-classant la classe. AWSCredentialsProviderChain
Spécifiez explicitement les informations d'identification temporaires
Si la chaîne d'informations d'identification par défaut, ou un fournisseur ou une chaîne de fournisseur spécifique ou personnalisé ne fonctionne pas pour votre code, vous pouvez définir des informations d'identification que vous spécifiez explicitement. Si vous avez récupéré des informations d'identification temporaires à l'aide de AWS STS, utilisez cette méthode pour spécifier les informations d'identification pour AWS l'accès.
-
Instanciez la BasicSessionCredentialsclasse et fournissez-lui la clé d' AWS accès, la clé AWS secrète et le jeton de AWS session qu'elle SDK utilisera pour la connexion.
-
Créez un AWSStaticCredentialsProvideravec l'
AWSCredentials
objet. -
Configurez le générateur client avec l'interface
AWSStaticCredentialsProvider
et générez le client.
Voici un exemple.
BasicSessionCredentials awsCreds = new BasicSessionCredentials("access_key_id", "secret_key_id", "session_token"); AmazonS3 s3Client = AmazonS3ClientBuilder.standard() .withCredentials(new AWSStaticCredentialsProvider(awsCreds)) .build();