【问题标题】:How do I upload to AWS S3 from iOS without Cognito?如何在没有 Cognito 的情况下从 iOS 上传到 AWS S3?
【发布时间】:2016-09-26 20:12:02
【问题描述】:

我的目标:

使用最简单的代码将照片从 iOS 上传到通用 AWS S3 存储桶


我的尝试:


最佳实践假设:

我认为 Cognito 是我完成所有阅读后设置图片上传的默认方式。但是,我这样做有两个问题:

  1. 对于我应该只需要传递图像、存储桶、密钥和机密的东西来说,这似乎过于复杂。
  2. 我之前已经通过服务器完成了这项工作,只使用了密钥和秘密,所以我认为没有理由使用或支付 Cognito。

我的问题:

  • 有没有办法在不使用 Cognito 的情况下从 iOS 上传到 AWS S3?
  • 如果上述任何假设或问题都不是实现目标的最佳方式,那么最简单的实现方式是什么?

【问题讨论】:

    标签: ios amazon-web-services amazon-s3


    【解决方案1】:

    Cognito Identity 是一项免费服务,因此您无需为此付费。此外,您真的不应该在您的应用程序中使用硬编码凭据,因为它很容易被反编译和检索,这不是服务器端代码的情况。

    对于 iOS SDK,您可以使用 AWSStaticCredentialsProvider 作为向任何服务客户端提供静态凭据的一种方式。

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

    同样,您真的不应该在生产应用中这样做。

    【讨论】:

    • 感谢您的解释。知道如何静态地做这件事很好,但我会听取你的建议并使用服务器或 cognito。非常感谢!
    • 不是免费服务(也许当时是?)
    • Cognito Federated Identity 仍然是一项免费服务。 Cognito 用户池不是免费的
    【解决方案2】:

    我建议不要在没有 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 存储桶权限策略S3 permission policy

    【讨论】:

      【解决方案3】:

      完成这项工作所需的 cognito 部分是免费的。来自cognito FAQ

      “Cognito Identity 始终免费提供用于对用户进行身份验证和生成唯一标识符的联合身份功能。”

      此外,AWS 开发工具包中有一个方法AssumeRoleWithWebIdentity 允许您使用 openid 连接提供程序担任 AWS IAM 中定义的角色。如果您没有使用开放 id 连接提供程序,但您仍然设法通过后端进行身份验证,则可以使用 Cognito.GetOpenIdTokenForDeveloperIdentity 为您提供此用例的令牌。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-05-05
        • 2018-04-12
        • 2019-11-12
        • 2022-10-07
        • 2021-06-16
        • 1970-01-01
        • 2020-10-12
        相关资源
        最近更新 更多