簡體   English   中英

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

[英]How do I upload to AWS S3 from iOS without Cognito?

我的目標:

使用最簡單的代碼將照片從iOS上傳到常見的AWS S3存儲桶


我試過的:


最佳實踐假設:

我認為Cognito是我完成所有閱讀后設置圖像上傳的默認方式。 但是,我這樣做有兩個問題:

  1. 對於我應該只需要傳遞圖像,桶,密鑰和秘密的東西,這似乎過於復雜。
  2. 我之前已經通過一個服務器完成了這個,只有密鑰和秘密,所以我沒有看到使用或支付Cognito的理由。

我的問題:

  • 有沒有辦法在不使用Cognito的情況下從iOS上傳到AWS S3?
  • 如果我上述任何假設或問題不是實現目標的最佳方式,那么最簡單的方法是什么?

Cognito Identity是一項免費服務,因此您無需支付任何費用。 此外,您真的不應該在您的應用程序中使用硬編碼憑據,因為它可以很容易地反編譯和檢索,這不是服務器端代碼的情況。

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

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

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

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

如果您仍想這樣做,您可以為您的存儲區資源創建IAM用戶集策略,並將IAM用戶憑據放入您的代碼中“AWSCredentials credentials = new 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 Bucket權限策略而不是S3權限策略

認知的一部分需要使這項工作是免費的。 來自cognito FAQ

“使用Cognito Identity,用於驗證用戶身份和生成唯一標識符的聯合身份驗證功能始終是免費的。”

此外,AWS SDK中還有一個方法AssumeRoleWithWebIdentity ,它允許您使用openid連接提供程序承擔AWS IAM中定義的角色。 如果您沒有使用開放式ID連接提供程序,但您已設法使用后端進行身份驗證,則可以使用Cognito.GetOpenIdTokenForDeveloperIdentity為此用例提供令牌。

這里有一個很好的理解資源: https//aws.amazon.com/blogs/mobile/understanding-amazon-cognito-authentication-part-2-developer-authenticated-identities/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM