web-dev-qa-db-fra.com

Impossible de charger les informations d'identification AWS à partir du fichier /AwsCredentials.properties sur le chemin d'accès aux classes

Utilisation de ce code pour définir le chemin de classe 

AWSCredentialsProvider credentialsProvider = new ClasspathPropertiesFileCredentialsProvider();
ec2 = new AmazonEC2Client(credentialsProvider);

Voici le format du fichier AwsCredentials.properties 

# Fill in your AWS Access Key ID and Secret Access Key
# http://aws.Amazon.com/security-credentials
accessKey = keyHere
secretKey = secretKeyHere

Ci-dessous est l'exception que je reçois

Exception in thread "main" com.amazonaws.AmazonClientException: Unable to load AWS credentials from the /AwsCredentials.properties file on the classpath

    at com.amazonaws.auth.ClasspathPropertiesFileCredentialsProvider.getCredentials(ClasspathPropertiesFileCredentialsProvider.Java:81)
    at com.amazonaws.services.ec2.AmazonEC2Client.invoke(AmazonEC2Client.Java:8359)
18
Crew HaXor

Vous obtenez cette exception car votre kit SDK AWS ne parvient pas à charger vos informations d'identification . Ce que vous devez faire est d'aller à Préférences, puis allez à AWS et ajoutez votre clé secrète et votre clé d'accès. Pour que votre projet puisse récupérer les deux clés.

5
farhangdon

J'ai établi la connexion en utilisant une approche différente:

BasicAWSCredentials credentials = new BasicAWSCredentials(ACCESS_KEY, SECRET_KEY);
AmazonDynamoDBClient client = new AmazonDynamoDBClient(credentials).withRegion(Regions.US_EAST_1);
DynamoDB dynamoDB = new DynamoDB(client);

La clé d'accès et la clé secrète peuvent être créées dans Identity and Access Management console. J'espère que ça aide ...

22
gbonesso

Vous pouvez utiliser DefaultAwsCredentialsProviderChain ()

Selon les docs! http://docs.aws.Amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/auth/DefaultAWSCredentialsProviderChain.html

Chaîne du fournisseur d'informations d'identification AWS qui recherche les informations d'identification dans cet ordre:

  1. Variables d'environnement - AWS_ACCESS_KEY_ID et AWS_SECRET_ACCESS_KEY (RECOMMANDÉES car elles sont reconnues par tous les kits SDK AWS et CLI, à l'exception de .NET) ou AWS_ACCESS_KEY et AWS_SECRET_KEY (uniquement reconnues par le SDK Java).
  2. Propriétés système Java - aws.accessKeyId et aws.secretKey
  3. Fichier de profils d'identification à l'emplacement par défaut (~/.aws/informations d'identification) partagé par tous les kits SDK AWS et l'interface de ligne de commande AWS
  4. Informations d'identification de profil d'instance fournies via le service de métadonnées Amazon EC2
12
Raj Hassani
AWSCredentialsProvider credentialsProvider = new ProfileCredentialsProvider();
new AmazonEC2Client(credentialsProvider)

.aws/informations d'identification

[default]
aws_access_key_id =
aws_secret_access_key = 
8
Anders B

Essayez ceci pour le format de fichier:

[default]
aws_access_key_id=<your access key>
aws_secret_access_key=<your secret access key>

J'ai enregistré ce fichier sous le nom ~/.aws/credentials avec ProfileCredentialsProvider ().

3
Simon

Puisque AmazonDynamoDBClient (informations d'identification) est obsolète, je l'utilise.

init {
        val cp= AWSStaticCredentialsProvider(BasicAWSCredentials(ACCESS_KEY, SECRET_KEY))
        val client = AmazonDynamoDBClientBuilder.standard().withCredentials(cp).withRegion(Regions.US_EAST_1).build()
        dynamoDB = DynamoDB(client)
    }
1
Sai Kiran

Si vous utilisez le fichier d'informations d'identification à l'emplacement ~/.aws/credentials et utilisez le profil par défaut comme ci-dessous:

[default]
aws_access_key_id=<your access key>
aws_secret_access_key=<your secret access key>

Vous n'avez pas besoin d'utiliser BasicAWSCredential ou AWSCredentialsProvider. Le SDK peut extraire les informations d'identification du profil par défaut, simplement en initialisant l'objet client avec le constructeur par défaut. Exemple ci-dessous:

AmazonEC2Client ec2Client = new AmazonEC2Client();

En outre, vous devrez parfois initialiser le client avec ClientConfiguration pour fournir les paramètres de proxy, etc. Exemple ci-dessous.

ClientConfiguration clientConfiguration = new ClientConfiguration();
clientConfiguration.setProxyHost("proxyhost");
clientConfiguration.setProxyPort(proxyport);
AmazonEC2Client ec2Client = new AmazonEC2Client(clientConfiguration);
1
SheoSinha

Sur un serveur Linux, l’implémentation par défaut de ses attend les fichiers dans le fichier .aws/credential. Vous pouvez mettre le contenu suivant dans le fichier d'informations d'identification à l'emplacement ci-dessous et cela fonctionnera. /home/local/<your service account>/.aws/credential.

[default]
aws_access_key_id=<your access key>
aws_secret_access_key=<your secret access key>
0
Nilesh

Si vous voulez utiliser des variables d'environnement avec Apache/Tomcat, j'ai découvert Que la seule façon de les trouver était de les définir dans Tomcat/bin/setenv.sh .sh dans votre configuration)

exportation AWS_ACCESS_KEY_ID = *********;

exportation AWS_SECRET_ACCESS_KEY = **************;

Si vous utilisez ubuntu, essayez de vous connecter sous ubuntu $ printenv, puis connectez-vous en tant que root $ printenv, Les variables d'environnement ne seront pas nécessairement les mêmes ....

Si vous souhaitez uniquement utiliser des variables d'environnement, vous pouvez utiliser: Com.amazonaws.auth.EnvironmentVariableCredentialsProvider

au lieu de:

com.amazonaws.auth.DefaultAWSCredentialsProviderChain

(qui vérifie par défaut les 4 emplacements possibles)

de toute façon après des heures à essayer de comprendre pourquoi mes variables environnementales n’étaient pas retrouvées… cela a fonctionné pour moi.

0
user2677034