aws-S3-400 Bad Request

Ich bin versucht zu verengen die folgenden 400 Bad Request Fehler:

com.amazonaws.services.s3.model.AmazonS3Exception: Bad Request (Service: Amazon S3; Status Code: 400; Error Code: 400 Bad Request; Request ID: 7FBD3901B77A07C0), S3 Extended Request ID: +PrYXDrq9qJwhwHh+DmPusGekwWf+jmU2jepUkQX3zGa7uTT3GA1GlmHLkJjjjO67UQTndQA9PE=
    at com.amazonaws.http.AmazonHttpClient.handleErrorResponse(AmazonHttpClient.java:1343)
    at com.amazonaws.http.AmazonHttpClient.executeOneRequest(AmazonHttpClient.java:961)
    at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:738)
    at com.amazonaws.http.AmazonHttpClient.doExecute(AmazonHttpClient.java:489)
    at com.amazonaws.http.AmazonHttpClient.executeWithTimer(AmazonHttpClient.java:448)
    at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:397)
    at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:378)
    at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:4039)
    at com.amazonaws.services.s3.AmazonS3Client.getObjectMetadata(AmazonS3Client.java:1177)
    at com.amazonaws.services.s3.AmazonS3Client.getObjectMetadata(AmazonS3Client.java:1152)
    at com.amazonaws.services.s3.AmazonS3Client.doesObjectExist(AmazonS3Client.java:1212)
    at com.abcnews.apwebfeed.articleresolver.APWebFeedArticleResolverImpl.makeS3Crops(APWebFeedArticleResolverImpl.java:904)
    at com.abcnews.apwebfeed.articleresolver.APWebFeedArticleResolverImpl.resolve(APWebFeedArticleResolverImpl.java:542)
    at sun.reflect.GeneratedMethodAccessor62.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.codehaus.xfire.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:54)
    at org.codehaus.xfire.service.binding.ServiceInvocationHandler.sendMessage(ServiceInvocationHandler.java:322)
    at org.codehaus.xfire.service.binding.ServiceInvocationHandler$1.run(ServiceInvocationHandler.java:86)
    at java.lang.Thread.run(Thread.java:662)

Bin ich etwas testen, wie sich damit als:

boolean exists = s3client.doesObjectExist("aws-wire-qa", "wfiles/in/wire.json");

Ich manuell Hinzugefügt, die wfiles/in/Draht.json-Datei. Ich wieder wahr, wenn ich diese Zeile in einem lokalen app. Aber in einem separaten remote service wirft es den oben genannten Fehler. Ich verwenden die gleichen Anmeldeinformationen innerhalb des Dienstes als ich in meine lokale app. Ich habe auch set Eimer "Enable website hosting", aber kein Unterschied.
Meine Berechtigungen sind so eingestellt, wie:

Grantee: Any Authenticated AWS User
y List 
y Upload/DeleteView 
y PermissionsEdit Permissions    

So, ich dachte der Fehler könnte in Bezug auf, nicht eine Politik, die auf die Eimer und erstellt eine policy-Datei auf dem Eimer für GET/PUT/DELETE, Objekte, aber ich bin noch immer der gleiche Fehler. Meine Politik wie folgt Aussehen:

{
"Version": "2012-10-17",
"Id": "Policy1481303257155",
"Statement": [
    {
        "Sid": "Stmt1481303250933",
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::755710071517:user/law"
        },
        "Action": [
            "s3:DeleteObject",
            "s3:GetObject",
            "s3:PutObject"
        ],
        "Resource": "arn:aws:s3:::aws-wire-qa/*"
    }
]
}

Mir wurde gesagt, es kann nicht eine firewall oder ein proxy-Problem. Was ich sonst noch versuchen könnte? Die Fehlermeldung ist sehr unspezifisch. Und bisher habe ich nur die lokale Entwicklung, so habe ich keine Ahnung, was wir sonst nicht hier eingestellt. Wäre viel zu schätzen, hier etwas Hilfe.

Dies ist nicht im Zusammenhang mit Berechtigungen. Es ist möglich, dass Sie sein könnte, sendet die Anfrage an die falsche S3-region.
Sie sind absolut richtig, ich wurde getestet, früher mit einem anderen Eimer und nicht verwaltet region ändern. Vielen Dank! Direkt am Ziel!
Berechtigungen Probleme wurden schnell ausgeschlossen, weil das sollte 403 Forbidden... ich bin froh, dass es behoben, aber ehrlich gesagt, das war nur eine intuitive Vermutung-eine Möglichkeit unter mehreren, die bewirken könnten, dass ein 400 Bad Request Antwort. Ich würde gerne glauben, dass das Java-SDK bietet einen Mechanismus, um den Zugriff auf die response-Header und Körper, weil die Informationen, die es sein sollte, und das wäre für eine legitime und nützliche Antwort.
Ich bin kein Java-Entwickler, also kann ich noch keine Ahnung, was ich verlange, aber ich fand dieser, so Frage ich mich... mit diesem ist es möglich für Sie zu verwenden getErrorResponseXml() zum extrahieren der XML-Fehler, die von der exception?

InformationsquelleAutor user2917629 | 2016-12-14

Schreibe einen Kommentar