【问题标题】:Accessing AWS S3 from android app without hard-coding access keys无需硬编码访问密钥即可从 android 应用程序访问 AWS S3
【发布时间】:2021-05-28 16:25:26
【问题描述】:

我是 AWS 新手。我想从我的 android 应用程序访问 S3 存储桶,以便上传存储在 android 设备的 Downloads 文件夹中的文件。我已经按照this 教程尝试并做到了。但是,我不想在我的源代码中包含访问密钥 ID 和秘密访问密钥。我发现使用 AWS Cognito 可能有一种方法可以做到这一点,但我还没有找到指导教程。只要我不必对密钥进行硬编码,我也愿意使用其他方式访问 S3。我还在 StackOverflow 上发现了一些与此相关的问题,但没有得到很好的回答。

任何能指引我正确方向的事情都会有所帮助。

【问题讨论】:

    标签: java android amazon-web-services amazon-s3 amazon-cognito


    【解决方案1】:

    AWS Cognito 是必经之路。通过身份池,您可以发送允许您和您的用户访问您的 S3 存储桶的 access_keys。

    我知道网上没有明确的分步教程,几周前我不得不自己弄清楚(react js 和 django 后端)。

    official docs 很好地帮助了我。认证功能并不复杂。你也可以关注this tutorial for the aws set up process。祝你好运!

    【讨论】:

      【解决方案2】:

      在移动应用中硬编码您的凭据不是一个好方法。

      我的建议是,您必须向后端服务器请求临时凭据。

      后端将为具有受限访问权限的 S3 创建一个 STS 令牌并将其提供给您。

      您可以在下面的链接中找到更多信息

      https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/prog-services-sts.html

      【讨论】:

      • 感谢您的回答。这似乎是我想要实现的。但是,当我按照您提供的链接中的步骤操作时,在创建 AWSSecurityTokenServiceClient 对象的第一步中遇到错误。错误说:“AWSSecurityTokenServiceClientBuilder()”在“com.amazonaws.services.securitytoken.AWSSecurityTokenServiceClientBuilder”中具有私有访问权限。知道如何解决吗?
      【解决方案3】:

      在 S3 上上传文件的更好方法之一是使用预签名 URL。您可以创建一个 API 来生成用于在 S3 上上传文件的预签名 url。

      访问此处了解操作方法 - https://medium.com/@aidan.hallett/securing-aws-s3-uploads-using-presigned-urls-aa821c13ae8d

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-04-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-04-30
        • 2019-12-07
        • 2019-10-29
        相关资源
        最近更新 更多