2016-05-16 5 views
1

Я застрял на этом целую вечность. Я вижу, что у других была такая же проблема, но я не могу это исправить.Amazon S3 upload Доступ запрещен

Я разрабатываю приложение для Android, которое делает снимок с камеры и загружает его в ведро Amazon S3. Вот мой код:

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 */ 
     ); 

Я создал ведро. Файл f, я преобразовал растровое изображение с камеры в файл. Мой идентификатор пула работает, если я его изменяю, я получаю сообщение об ошибке pool not found; то же самое с ведром. Однако каждый раз, когда я пытаюсь загрузить я получаю эту ошибку:

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

Я новичок с Amazon S3, и я следую их инструкциям снова и снова, но я не могу это исправить.

Я это в манифесте:

<service 


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

и правильные разрешения.

Что нужно сделать, чтобы исправить это?

+0

Какое полное сообщение об ошибке? – Yangfan

+0

Возможно, вы попытаетесь использовать пример: http://stackoverflow.com/questions/27096717/image-upload-amazon-s3-android-sdk-2-0 – mootmoot

ответ

1

Проверьте свои права на ведро, попробуйте открыть его полностью и посмотрите, можете ли вы получить к нему доступ через SDK от Android.

Заканчивать генератор политики, AWS обеспечивает, чтобы помочь вам в этом:

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

+0

Я пробовал это. Сделал политику, позволяющую читать и писать от кого-либо, все равно не работает. – RJB

-1

Ответ на мой вопрос в том, что эта проблема происходит, когда я проверил мое приложение на устройстве, Nexus 5. Когда Я использовал amululater (Genymotion), он работает. Однако почему это не сработало на моем реальном устройстве, я не знаю.

+0

Это определенно НЕ ответ. – mootmoot

+0

это может быть не полный ответ, но я думаю, что он обеспечивает очень хорошее место, где искать ответ. Если бы вы могли помочь больше, пожалуйста, дайте мне знать. – RJB

+1

Возможно, вам следует объединить это с вашим вопросом и сказать, что вы можете сделать это под эмулятором. Однако все еще слишком мало деталей. – mootmoot