Utilisation d'AWSInformations d'identification - AWS SDK for Java

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.

Utilisation d'AWSInformations d'identification

Pour adresser des demandes àAmazon Web Services, vous devez fournirAWSInformations d'identification à l'AWS SDK for Java. 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 les informations d'identification vous-même. Il peut s'agir des informations d'identification du compte racine, d'informations d'identification IAM, ou d'informations d'identification temporairesAWS STS.

Important

Pour des raisons de sécurité, nousrecommande vivementque vousUtilisation deau lieu du compte root pourAWSaccéder à. Pour plus d'informations, veuillez consulter la rubriqueBonnes pratiques IAMdans leIAMGuide de l'utilisateur .

Utilisation de la chaîne de fournisseur d'informations d'identification par défaut

Lorsque vous initialisez un nouveau client de service sans fournir des arguments, leAWS SDK for JavaTentatives pour trouverAWSInformations d'identification à l'aide dechaîne de fournisseurs d'informations d'identificationmis en œuvre par l'Par défautAWSCredentialsProviderChainclasse. 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_IDetAWS_SECRET_ACCESS_KEY. LeAWS SDK for Javautilise leEnvironmentVariableCredentialsProviderclasse pour charger ces informations d'identification.

  2. Propriétés système Java-aws.accessKeyIdetaws.secretAccessKey. LeAWS SDK for Javautilise leSystemPropertiesCredentialsProviderpour 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é à~/.aws/credentials(l'emplacement peut varier selon la plateforme), et partagé par de nombreuxAWSSDK et parAWS CLI. LeAWS SDK for Javautilise leProfileCredentialsProviderpour charger ces informations d'identification.

    Vous pouvez créer un fichier d'informations d'identification à l'aide d'aws configurecommande fournie parAWS CLI, ou vous pouvez le créer en modifiant le fichier avec un éditeur de texte. Pour plus d'informations sur le format du fichier d'informations d'identification,AWSFormat de fichier d'informations.

  5. Informations d'identification du conteneur Amazon ECS- chargé depuis Amazon ECS si la variable d'environnementAWS_CONTAINER_CREDENTIALS_RELATIVE_URIest réglé. LeAWS SDK for Javautilise leContainerCredentialsProviderpour charger ces informations d'identification. Vous pouvez spécifier l'adresse IP de cette valeur.

  6. Identification du profil d'instance- utilisé sur les instances EC2 et fourni viaAmazon EC2service des métadonnées. LeAWS SDK for Javautilise leInstanceProfileCredentialsProviderpour 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. VoirEC2ContainerCredentialsProviderWrapperpour plus d'informations.

Définition des informations d'identification

Pour pouvoir utiliserAWSinformations d'identification, elles doivent être définies dansau moins unedes emplacements précédents. Pour plus d'informations sur la définition des informations d'identification, consultez les rubriques suivantes :

Définition d'un autre profil d'informations 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 le pluginAWSVariable d'environnement de profil pour modifier le profil chargé par le kit SDK.

Par exemple, sous Linux, macOS, ou Unix, vous exécuteriez la commande suivante pour modifier le profil enmyProfile.

export AWS_PROFILE="myProfile"

Sous Windows, utilisez la commande suivante.

set AWS_PROFILE="myProfile"

Réglage deAWS_PROFILEune variable d'environnement affecte le chargement des informations d'identification pour tous les supports officielsAWSKits SDK et outils (y comprisAWS CLIet l'AWS Tools for Windows PowerShell). Pour modifier uniquement le profil pour une application Java, vous pouvez utiliser la propriété systèmeaws.profileet non de

Note

La variable d'environnement est prioritaire sur la propriété système.

Définition d'un autre emplacement de fichier d'informations d'identification

LeAWS SDK for JavachargesAWSinformations d'identification automatiquement à partir de l'emplacement de fichier d'informations d' 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éfinir la propriétéAWS_CREDENTIAL_PROFILES_FILEvariable d'environnement selon l'emplacement de votreAWSfichier 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

Format de fichier d'informations

Lorsque vous utilisez l'aws configurecommande pour créer unAWSfichier d'informations d'identification, la commande crée un fichier au format suivant.

[default] aws_access_key_id={YOUR_ACCESS_KEY_ID} aws_secret_access_key={YOUR_SECRET_ACCESS_KEY} [profile2] aws_access_key_id={YOUR_ACCESS_KEY_ID} aws_secret_access_key={YOUR_SECRET_ACCESS_KEY}

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. Votre fichier d'informations d'identification peut contenir plusieurs profils qui peuvent être ajoutés ou modifiés à l'aide aws configure --profile PROFILE_NAME pour sélectionner le profil à configurer.

Vous pouvez spécifier des champs supplémentaires, tels que aws_session_token, metadata_service_timeout et metadata_service_num_attempts. Ces champs ne sont pas configurables avec l'interface de ligne de commande. Vous devez modifier le fichier manuellement si vous souhaitez les utiliser. Pour de plus amples informations sur le fichier de configuration et ses champs disponibles, consultez la section.Configuration deAWS Command Line Interfacedans leAWS Command Line InterfaceGuide de l'utilisateur .

Chargement des informations d'identification

Une fois que vous avez défini des informations d'identification, vous pouvez les charger à l'aide de la chaîne de fournisseur d'informations d'identification par défaut.

Pour ce faire, vous instanciez unService AWSclient sans fournir explicitement des informations d'identification au générateur, comme suit.

AmazonS3 s3Client = AmazonS3ClientBuilder.standard() .withRegion(Regions.US_WEST_2) .build();

Spécification d'un fournisseur ou d'une chaîne de fournisseur d'informations d'identification

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 ou d'une chaîne de fournisseur d'informations d'identification à un générateur client qui prend uneAWSCredentialsProviderinterface en tant qu'entrée. L'exemple suivant montre comment utiliser des informations d'identification d'environnement.

AmazonS3 s3Client = AmazonS3ClientBuilder.standard() .withCredentials(new EnvironmentVariableCredentialsProvider()) .build();

Pour obtenir la liste complète deAWS SDK for Java-fournisseurs et chaînes de fournisseur d'informations d'identification fournis par le kit, consultezToutes les classes d'implémentation connuesdansAWSCredentialsProvider.

Note

Vous pouvez utiliser cette technique pour spécifier les fournisseurs ou chaînes de fournisseur d'informations d'identification que vous créez à l'aide de votre propre fournisseur d'informations d'identification qui implémente leAWSCredentialsProviderinterface, ou en sous-classantAWSCredentialsProviderChainclasse.

Spécification explicite d'informations d'identification

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 en utilisantAWS STS, utilisez cette méthode afin de spécifier les informations d'identification pourAWSaccéder à.

  1. Instanciez une classe qui fournit l'AWSCredentialsinterface, telle queBaseAWSCredentials, et fournissez-le avecAWSclé d'accès et clé secrète que vous utiliserez pour la connexion.

  2. Création d'unAWSStaticCredentialsProvideravec leAWSCredentialsobjet.

  3. Configurez le générateur client avec l'interface AWSStaticCredentialsProvider et générez le client.

Voici un exemple.

BasicAWSCredentials awsCreds = new BasicAWSCredentials("access_key_id", "secret_key_id"); AmazonS3 s3Client = AmazonS3ClientBuilder.standard() .withCredentials(new AWSStaticCredentialsProvider(awsCreds)) .build();

Lorsque vous utilisezidentifiants temporaires obtenus auprès de STS, créez unBasicSessionCredentialsobjet, en lui transmettant les informations d'identification et le jeton de session fournis par STS.

BasicSessionCredentials sessionCredentials = new BasicSessionCredentials( session_creds.getAccessKeyId(), session_creds.getSecretAccessKey(), session_creds.getSessionToken()); AmazonS3 s3 = AmazonS3ClientBuilder.standard() .withCredentials(new AWSStaticCredentialsProvider(sessionCredentials)) .build();

Plus d'informations