it-swarm.com.de

AWS-Berechtigungsnachweise können nicht aus der Datei /AwsCredentials.properties im Klassenpfad geladen werden

Verwenden Sie diesen Code zum Festlegen des Klassenpfads 

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

Das Format der Datei AwsCredentials.properties befindet sich unten 

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

Hier ist die Ausnahme, die ich bekomme

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

Sie erhalten diese Ausnahmebedingung, da Ihr AWS-SDK Ihre Anmeldeinformationen nicht laden kann Damit Ihr Projekt beide Schlüssel abrufen kann.

5
farhangdon

Ich habe die Verbindung mit einem anderen Ansatz hergestellt:

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

Der Zugriffsschlüssel und der geheime Schlüssel können in der Konsole Identity and Access Management erstellt werden. Ich hoffe, es hilft...

22
gbonesso

Sie können DefaultAwsCredentialsProviderChain () verwenden.

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

AWS-Anbieterkette für Berechtigungsnachweise, die in dieser Reihenfolge nach Berechtigungsnachweisen sucht:

  1. Umgebungsvariablen - AWS_ACCESS_KEY_ID und AWS_SECRET_ACCESS_KEY (RECOMMENDED, da sie von allen AWS SDKs und CLI mit Ausnahme von .NET erkannt werden) oder AWS_ACCESS_KEY und AWS_SECRET_KEY (nur von Java SDK erkannt)
  2. Java-Systemeigenschaften - aws.accessKeyId und aws.secretKey
  3. Datei mit den Anmeldeinformationen am Standardspeicherort (~/.aws/credentials), der von allen AWS SDKs und der AWS CLI gemeinsam genutzt wird
  4. Instanzprofil-Berechtigungsnachweise, die über den Amazon EC2-Metadatendienst bereitgestellt werden
12
Raj Hassani
AWSCredentialsProvider credentialsProvider = new ProfileCredentialsProvider();
new AmazonEC2Client(credentialsProvider)

.aws/Berechtigungsnachweise

[default]
aws_access_key_id =
aws_secret_access_key = 
8
Anders B

Versuchen Sie dies für das Dateiformat:

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

Ich habe diese Datei als ~/.aws/credentials mit ProfileCredentialsProvider () gespeichert.

3
Simon

Da AmazonDynamoDBClient (Berechtigungsnachweise) veraltet ist, verwende ich dies.

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

Wenn Sie die Berechtigungsnachweisdatei unter ~/.aws/credentials verwenden und das Standardprofil wie folgt verwenden:

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

Sie müssen nicht BasicAWSCredential oder AWSCredentialsProvider verwenden. Das SDK kann die Berechtigungsnachweise aus dem Standardprofil abrufen, indem das Clientobjekt einfach mit dem Standardkonstruktor initialisiert wird. Beispiel unten:

AmazonEC2Client ec2Client = new AmazonEC2Client();

Außerdem müssen Sie den Client gelegentlich mit der ClientConfiguration initialisieren, um Proxy-Einstellungen usw. bereitzustellen. Beispiel unten.

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

Auf einem Linux-Server erwartet die Standardimplementierung von ses Dateien in der .aws/credential-Datei. Sie können den folgenden Inhalt in die Anmeldeinformationsdatei unterhalb des Speicherorts einfügen. Dies funktioniert. /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

Wenn Sie Umgebungsvariablen mit Apache/Tomcat verwenden möchten, habe ich festgestellt, dass sie nur in Tomcat/bin/setenv.sh Gefunden werden können (wo catalina_opts gesetzt ist - möglicherweise catalina) .sh in Ihrem Setup)

export AWS_ACCESS_KEY_ID = *********;

export AWS_SECRET_ACCESS_KEY = **************;

Wenn Sie ubuntu verwenden, melden Sie sich als ubuntu $ printenv an und melden Sie sich als root $ printenv, .__ an. Die Umgebungsvariablen sind nicht unbedingt die gleichen.

Wenn Sie nur Umgebungsvariablen verwenden möchten, können Sie Folgendes verwenden: Com.amazonaws.auth.EnvironmentVariableCredentialsProvider

anstatt:

com.amazonaws.auth.DefaultAWSCredentialsProviderChain

(die standardmäßig alle 4 möglichen Standorte überprüft)

nach stundenlangem Versuch herauszufinden, warum meine Umgebungsvariablen nicht gefunden wurden ... das funktionierte für mich.

0
user2677034