Fournissez des informations d'identification temporaires au AWS SDK for Java - AWS SDK for Java1. x

Nous avons annoncé la sortie prochaine end-of-support de AWS SDK for Java (v1). Nous vous recommandons de migrer vers la AWS SDK for Javaversion v2. Pour les dates, les détails supplémentaires et les informations sur la façon de migrer, reportez-vous à l'annonce associée.

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 AWSCredentialsProviderChainDefault. La chaîne de fournisseur d'informations d'identification par défaut recherche les informations d'identification dans l'ordre suivant :

  1. Variables d'environnement - AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY, etAWS_SESSION_TOKEN. AWS SDK for JavaUtilise la EnvironmentVariableCredentialsProviderclasse pour charger ces informations d'identification.

  2. Propriétés du système Java - aws.accessKeyIdaws.secretKey, etaws.sessionToken. AWS SDK for Javautilise le SystemPropertiesCredentialsProviderpour charger ces informations d'identification.

  3. Informations d'identification du jeton d'identité web à partir de l'environnement ou du conteneur.

  4. 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 SDK et par le. AWS CLI AWS SDK for Javautilise 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 leAWS 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.

  5. Informations d'identification du conteneur Amazon ECS : chargées depuis Amazon ECS si la variable d'environnement AWS_CONTAINER_CREDENTIALS_RELATIVE_URI est définie. AWS SDK for Javautilise le ContainerCredentialsProviderpour charger ces informations d'identification. Vous pouvez spécifier l'adresse IP de cette valeur.

  6. Informations d'identification du profil d'instance : utilisées sur les instances EC2 et fournies via le service de Amazon EC2 métadonnées. AWS SDK for Javautilise 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. Consultez EC2 ContainerCredentialsProviderWrapper pour 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 :

Définir un autre profil d'identification

Le kit AWS SDK for Java utilise par défaut le profil par défaut, mais il existe des moyens de personnaliser le profil duquel provient le fichier d'informations d'identification.

Vous pouvez utiliser la variable d'environnement AWS Profile pour modifier le profil chargé par le SDK.

Par exemple, sous Linux, macOS ou Unix, vous devez exécuter la commande suivante pour remplacer le profil par MyProfile.

export AWS_PROFILE="myProfile"

Sous Windows, utilisez la commande suivante.

set AWS_PROFILE="myProfile"

La définition de la variable d'AWS_PROFILEenvironnement affecte le chargement des informations d'identification pour tous les AWS SDK et outils officiellement pris en charge (y compris le AWS CLI et leAWS 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 JavaCharge 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 fonction pour modifier temporairement l'emplacement où le kit AWS SDK for Java recherche votre fichier d'informations d'identification (par exemple, en définissant cette variable à l'aide de 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_FILEenvironnement 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

Credentialsformat 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 avec la CLI : 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, le SDK les charge 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'AWSCredentialsProviderinterface, 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 deAWS STS, utilisez cette méthode pour spécifier les informations d'identification pour AWS l'accès.

  1. Instanciez la BasicSessionCredentialsclasse et fournissez-lui la clé d'AWSaccès, la clé AWS secrète et le jeton de AWS session que le SDK utilisera pour la connexion.

  2. Créez un AWSStaticCredentialsProvideravec l'AWSCredentialsobjet.

  3. 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();

Plus d'informations