2017-09-14 31 views
0

我們有S3桶是私人的。 s3存儲桶是手動創建的,其中的文件由我們的.net服務器上傳(文件也是私有的)並且我們希望在Android應用中安全地訪問這些私人文件。我們沒有任何登錄/應用程序。什麼是推薦的方式來訪問從Android應用私人S3桶

我使用下面的方法吧

1. Created identity pool and enabled access to unauthenticated identities as there is no any login in our app 
2. Configured IAM role. for unAuth role, added inline policy to have full aceess to s3 bucket 

,我使用以下AWS樣品測試方法

https://github.com/awslabs/aws-sdk-android-samples/tree/master/S3TransferUtilitySample

我的問題是,

  1. 它是一個正確的方法,因爲文件具有版權信息,並且不應該破解bucke t並且接收所有文件而無需付費。
  2. 上面的示例GitHub示例不能正常工作並給出訪問被拒絕的錯誤,但是如果我使存儲桶公開,那麼我只能訪問公用文件,而不能訪問私有文件。那麼,這種方法不適用於私人存儲?

在此先感謝。

+0

您是否使用了預先登記的url。在給定時間內已過期。請參考本課程獲取更多信息。 [GeneratePresignedUrlRequest。 http://docs.aws.amazon.com/AWSAndroidSDK/latest/javadoc/index.html?com/amazonaws/services/s3/model/GeneratePresignedUrlRequest.html – mcd

+0

我正在使用以下示例 - https://github.com/ awslabs/aws-sdk-android-samples/tree/master/S3TransferUtilitySample它有下載方法。 transferUtility.download(Constants.BUCKET_NAME,key,file); –

+0

我使用移動aws android sdk - > http://docs.aws.amazon.com/mobile/sdkforandroid/developerguide/getting-started-store-retrieve-s3-transferutility.html –

回答

0

在這種情況下使用unauth標識可能不是最好的方法。因爲任何人都可以獲得非真實身份。理想情況下,您應該擁有自己的授權人員執行此操作。它可以通過多種方式完成,比如API Gateway和Lambda,它可以在應用程序中爲您提供預先簽名的URL,用於獲取S3文件。

謝謝, Rohan

相關問題