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)
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.
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 ...
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:
AWSCredentialsProvider credentialsProvider = new ProfileCredentialsProvider();
new AmazonEC2Client(credentialsProvider)
.aws/informations d'identification
[default]
aws_access_key_id =
aws_secret_access_key =
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 ().
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)
}
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);
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>
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.