2016-05-28 9 views
2

私の目標:私が試した何CognitoなしでiOSからAWS S3にアップロードするにはどうすればよいですか?


できるだけ簡単なコードと共通のAWS S3バケットへのiOSから

写真をアップロードする:


前提とCognitoプールの作成variousblogsとSOの質問

  • 読むCognito FAQ page
  • 読む:私はCognitoがあることを前提としてい

    を私が行ったすべての読書の後に画像のアップロードを設定するデフォルトの方法。しかし、私はこのようにそれをやって2つの問題を抱えて:

    1. を私はちょうど画像、バケツ、キー、および秘密を渡す必要がすべきもののために過度に複雑そうです。
    2. 私は以前、鍵と秘密だけでこれをサーバー経由で行っていたので、Cognitoを使用したり支払ったりする理由は見当たりません。

    私の質問:

    • Cognitoを使用せずに、AWS S3へのiOSからアップロードする方法はありますか?
    • 私の上記の仮定や質問のいずれかが私の目標を実現する最善の方法でない場合は、それを行う最も簡単な方法は何ですか?
  • 答えて

    6

    コグニートアイデンティティは無料サービスなので、実際に支払いをする必要はありません。また、サーバー側のコードの場合はシナリオではないため、簡単にデコンパイルして取得できるので、ハードコードされた資格情報をアプリケーションで使用しないでください。

    iOS SDKの場合、任意のサービスクライアントに静的な資格情報を提供する手段としてAWSStaticCredentialsProviderを使用できます。

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

    もう一度、プロダクションアプリでこれを行うべきではありません。

    +0

    ありがとうございます。それを静的に行う方法を知っているのは良いことですが、私はあなたのアドバイスを取ってサーバーやコグニトを使用します。とても有難い! – smileham

    3

    Moblieアプリケーションでは、CognitoなしでAWSを使用しないことをお勧めします。

    あなたはまだあなたがいることを、あなたのバケットリソースへの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);` 
    

    ノートにIAMユーザーの資格情報を置くことができることをやりたい場合この方法は危険です! AWS S3バケット許可ポリシーをS3 permission policyの代わりに設定できます。

    関連する問題