2016-05-28 42 views
2

我的目標:從iOS的如何在沒有Cognito的情況下從iOS上傳到AWS S3?

照片上傳到一個共同的AWS S3桶可能


最簡單的代碼,我已經試過:


假設:

我認爲Cognito是在完成所有閱讀後設置圖片上傳的默認方式。然而,我這樣做有兩個問題:

  1. 它似乎過於複雜的東西,我應該只需要傳遞圖像,存儲桶,密鑰和祕密。
  2. 我已經通過一臺服務器完成了這項工作,只需密鑰和祕密,所以我沒有看到使用或支付Cognito的理由。

我的問題:

  • 有從iOS版上傳到AWS S3不使用Cognito的方法嗎?
  • 如果我上面的任何假設或問題不是實現我的目標的最佳方式,那麼最簡單的方法是什麼?

回答

6

Cognit Identity是一項免費服務,因此您不必爲此付費。此外,你真的不應該在你的應用中使用硬編碼的憑據,因爲它可以很容易地反編譯和檢索,這不是在服務器端代碼的情況下。

對於iOS SDK,您可以使用AWSStaticCredentialsProvider作爲向任何服務客戶端提供靜態憑據的方式。

AWSStaticCredentialsProvider *credentialsProvider = [AWSStaticCredentialsProvider credentialsWithAccessKey:@"YourAccessKey" secretKey:@"YourSecretKey"]; 

再次,你真的不應該在生產應用程序中這樣做。

+0

感謝您的解釋。知道如何靜態執行它是很好的,但我會接受你的建議並使用服務器或認知。非常感激! – smileham

3

我建議不要在沒有Cognito的Moblie應用程序中使用AWS。

如果你仍然想這樣做,你可以創建一個IAM用戶組策略來你的水桶資源,並把IAM用戶憑證代碼`AWSCredentials證書=新AWSCredentials(){

 @Override 
     public String getAWSSecretKey() { 
      // TODO Auto-generated method stub 
      return "YOUR_SECRETKEY"; 
     } 

     @Override 
     public String getAWSAccessKeyId() { 
      // TODO Auto-generated method stub 
      return "YOUR_IAM_AWS_ACCESS_KEY_ID"; 
     } 
    }; 

    AmazonS3 s3 = new AmazonS3Client(credentials);` 

注意該方法是危險的使用! 您可以設置AWS S3存儲桶權限策略,而不是S3 permission policy

相關問題