AWS-Fehler beim Download Objekt von S3, "Profil-Datei kann nicht null sein"

Ich habe schon gesehen,diese, aber es gab keine Antwort, um zu erklären, mein problem. Ich zum ersten mal die Probe hier (GetObject-Klasse), und es hat sofort funktioniert auf meinem desktop. Aber mein Freund konnte sich nicht auf seine Maschine, noch wird es funktionieren, die auf unsere EC2-Instanz.

Es wurde erwähnt, dass es sein Anmeldeinformationen angegebenen Dateien, die Sinn macht, aber ich hatte nie das zu tun, und bin ziemlich sicher, dass die Standard-Berechtigungen eingerichtet wurden, ermöglichen den Zugriff auf das bucket.

Hier der stacktrace:

Exception in thread "main" java.lang.IllegalArgumentException: profile file cannot be null
    at com.amazonaws.util.ValidationUtils.assertNotNull(ValidationUtils.java:37)
    at com.amazonaws.auth.profile.ProfilesConfigFile.<init>(ProfilesConfigFile.java:142)
    at com.amazonaws.auth.profile.ProfilesConfigFile.<init>(ProfilesConfigFile.java:133)
    at com.amazonaws.auth.profile.ProfilesConfigFile.<init>(ProfilesConfigFile.java:100)
    at com.amazonaws.auth.profile.ProfileCredentialsProvider.getCredentials(ProfileCredentialsProvider.java:135)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.getCredentialsFromContext(AmazonHttpClient.java:1029)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeOneRequest(AmazonHttpClient.java:1049)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeHelper(AmazonHttpClient.java:949)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.doExecute(AmazonHttpClient.java:662)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeWithTimer(AmazonHttpClient.java:636)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.execute(AmazonHttpClient.java:619)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.access$300(AmazonHttpClient.java:587)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutionBuilderImpl.execute(AmazonHttpClient.java:574)
    at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:446)
    at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:4035)
    at com.amazonaws.services.s3.AmazonS3Client.getBucketRegionViaHeadRequest(AmazonS3Client.java:4474)
    at com.amazonaws.services.s3.AmazonS3Client.fetchRegionFromCache(AmazonS3Client.java:4448)
    at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:4020)
    at com.amazonaws.services.s3.AmazonS3Client.getObject(AmazonS3Client.java:1307)
    at GetObject.main(GetObject.java:26)

Kann ich garantieren, dass weder der bucketName noch der Schlüssel params in der GetObjectRequest null sind. Was ist die Diskrepanz hier? Warum könnte es gelingen, nur auf meinem PC? Ist dies überhaupt im Zusammenhang mit der Tatsache, dass ich hatte, um zu ergänzen, zahlreiche Gläser, die die aws-sdk-jar-soll schon (jackson-databind-Methode, jackson-Kern, jackson-annotations, httpclient, httpcore, commons-logging, und joda-time)? Es scheint ähnlich, was mit der sonst unerklärliche Fehler (die nicht-null params, etwas in der aws-sdk sagt, es ist null).

  • Nicht sicher, ob du das schon gesehen: stackoverflow.com/a/41670728/3770040
  • Ich bin noch auf der Suche in Ihrer Verbindung, und das "arbeiten mit AWS-Anmeldeinformationen" - Seite verlinkt, aber ich habe nie diese-für mein eclipse Projekt, und ich habe nicht eine credentials-Datei. Ich bin nur das Beispiel ausführen von out-of-the-box und es funktioniert einwandfrei. Ich bin immer noch verwirrt.
  • Ok, ich denke, ich erkannte das Problem: ich dachte die Anmeldeinformationen gewesen wäre, gespeichert in dem Projekt-Ordner, aber ich habe Total vergessen, über die ~/.aws/credentials-Datei trotz Lesen in schwarz und weiß aus die Frage, die ich verlinkte. Ich muss nur wissen, wie diese einzustellen ist für meine jar läuft auf meiner EC2-Instanz.
  • Als Allgemeine Regel gilt, nur im Kopf behalten, dass es immer empfehlenswert ist, in Bezug auf die Sicherheit, die Verwendung von EC2-Rollen anstelle von config-Dateien, das speichern von Benutzer-Anmeldeinformationen auf dem instance-Speicher.
InformationsquelleAutor Xenalin | 2017-01-22
Schreibe einen Kommentar