2016-05-16 14 views
1

Ich habe auf diese seit Ewigkeiten festgefahren. Ich sehe, dass andere das gleiche Problem hatten, aber ich kann es nicht beheben.Amazon S3 Upload Zugriff verweigert

Ich entwickle eine Android-App, die ein Bild von der Kamera aufnimmt und es auf Amazon S3 hochlädt. Hier ist mein Code:

CognitoCachingCredentialsProvider credentialsProvider = new CognitoCachingCredentialsProvider(
       getApplicationContext(), /* get the context for the application */ 
       "MY_POOL_ID", /* Identity Pool ID */ 
       Regions.US_EAST_1   /* Region for your identity pool--US_EAST_1 or EU_WEST_1*/ 
     ); 


     // Create an S3 client 
     AmazonS3 s3 = new AmazonS3Client(credentialsProvider); 

     s3.setRegion(Region.getRegion(Regions.US_EAST_1)); 

     TransferUtility transferUtility = new TransferUtility(s3, getApplicationContext()); 

     TransferObserver observer = transferUtility.upload(
       MY_BUCKET,  /* The bucket to upload to */ 
       OBJECT_KEY, /* The key for the uploaded object */ 
       f  /* The file where the data to upload exists */ 
     ); 

Ich habe einen Eimer erstellt. Die Datei f, habe ich ein Bitmap von der Kamera in eine Datei konvertiert. Meine Pool-ID funktioniert, wenn ich sie ändere, erhalte ich einen Fehler pool not found; Gleiches mit dem Eimer. Allerdings versuche jedes Mal, wenn ich lade ich diesen Fehler:

Failed to upload: 11 due to Access Denied (Service: Amazon S3; Status Code: 403; Error Code: AccessDenied; Request ID: FD1B30F)

Ich bin ein Anfänger mit Amazon S3, und ich bin nach ihren Anweisungen immer wieder, aber ich kann nicht dieses Problem beheben.

Ich habe dies in einem offenkundigen:

<service 


android:name="com.amazonaws.mobileconnectors.s3.transferutility.TransferService" 
     android:enabled="true" /> 

und die richtigen Berechtigungen.

Was muss ich tun, um dies zu korrigieren?

+0

Was ist die vollständige Fehlermeldung? – Yangfan

+0

Vielleicht möchten Sie einen Versuch mit Beispiel hier versuchen: http://stackoverflow.com/questions/27096717/image-upload-amazon-s3-android-sdk-2-0 – mootmoot

Antwort

1

Überprüfen Sie Ihre Bucket-Berechtigungen, versuchen Sie, es vollständig zu öffnen, und prüfen Sie, ob Sie über das SDK von Android darauf zugreifen können.

Schauen Sie sich die Politik-Generator, der AWS bietet Ihnen dabei helfen:

http://awspolicygen.s3.amazonaws.com/policygen.html

+0

Ich habe dies versucht. Hat eine Richtlinie gemacht, um das Lesen und Schreiben von jedem zu erlauben, funktioniert immer noch nicht. – RJB

-1

Die Antwort auf meine Frage ist, dass dieses Problem auftreten, wenn ich meine App auf meinem Gerät getestet, Nexus 5. Wenn Ich benutzte emulater (Genymotion) es funktioniert. Warum es bei meinem echten Gerät nicht funktioniert habe, weiß ich nicht.

+0

Dies ist definitiv keine Antwort. – mootmoot

+0

es kann nicht eine vollständige Antwort sein, aber ich denke, es bietet sehr gut den Ort, wo man nach der Antwort suchen. Wenn Sie mehr helfen könnten, lassen Sie es mich bitte wissen. – RJB

+1

Vielleicht sollten Sie dies mit Ihrer Frage zusammenführen und sagen, dass Sie dies unter Emulator tun können. Es gibt jedoch immer noch zu wenig Details. – mootmoot

Verwandte Themen