3

我想开发一个简单的 android 应用程序来将图像文件上传到 AWS 中已经创建的 S3 存储桶。如果我用谷歌搜索,所有最新的 AWS 文档都将我重定向到使用Amplify框架。我不了解此处描述的上传文件的文档。我不明白在哪里可以提供存储桶名称、IAM 凭证等。我也找不到任何视频教程。如果在没有提供适当文档的情况下强制使用 Amplify,为什么选择 AWS?

在这里,他们提到使用 Amplify CLI 配置所有详细信息

amplify add storage

并要求使用推送更改

amplify push

但是如果我们想以编程方式添加诸如存储桶名称、用户详细信息等详细信息,那么我们该怎么做呢?使用 Amplify 框架或旧的适用于 android 的 AWS 开发工具包在不使用 Cognito 的情况下上传文件,给我分步详细信息

4

2 回答 2

5

有多种方法可以将文件从 Android 设备上传到 S3。这里有几个。

使用 Amplify Android

Amplify Android 的存储类别的主要文档是在假设您将使用 Amplify CLI 创建的 AWS 资源的情况下编写的。还有一些关于使用现有 S3 存储桶的注意事项。

使用适用于 Android 的 AWS 开发工具包

如果两者都不能满足您的需求,您可以使用TransferUtility适用于 Android 的 AWS 开发工具包中的旧版本。下面是一个使用TransferUtility.

适用于 Android 的 AWS 开发工具包,无 Cognito

正如您所注意到的,上面的文档使用AWSMobileClient,它是 Amazon Cognito 的接口。但是,您可以使用 , 的任何实现CredentialsProvider进行身份验证;AWSMobileClient只是凭据提供程序的一个示例。

最简单(也是最不安全)的方法可能是使用 提供 IAM 用户的访问权限和密钥StaticCredentialsProvider,如下所示。

val region = Region.getRegion(Regions.US_EAST_1)
val credentials = BasicAWSCredentials(accessKey, secretKey)
val provider = StaticCredentialsProvider(credentials)

val transferUtility = TransferUtility.builder()
    .context(applicationContext)
    .s3Client(AmazonS3Client(provider, region))
    .awsConfiguration(AWSConfiguration(applicationContext))
    .build()

val listener = object: TransferListener {
    override fun onProgressChanged(id: Int, curr: Long, tot: Long) {}
    override fun onStateChanged(id: Int, state: TransferState?) {
        when (state) {
            COMPLETED -> { Log.i("Demo", "Upload succeeded.") }
            FAILED -> { /* handle err */ }
            else -> { /* handle cases... */ }
        }
    }
    override fun onError(id: Int, ex: Exception?) { /* handle err */ }
}

transferUtility.upload(remoteBucket, remoteKey, localFile)
    .setTransferListener(listener)
于 2020-07-22T06:55:19.397 回答
0

Aws - 为 android 放大,使用它我们可以执行 aws 操作,这里我将文件上传到 s3 存储桶中。

让我分享实现这一点所需的基本文件

对于基本的放大设置:

  1. https://www.youtube.com/watch?v=vefyYGn9C00&t=2s
  2. https://www.youtube.com/watch?v=qgrXMzFMHx4&t=306s

步骤1:

https://docs.amplify.aws/lib/auth/getting-started/q/platform/android/

验证

第2步:

s3-存储

第 3 步:

  1. https://docs.amplify.aws/lib/storage/getting-started/q/platform/android/(您可以从终端创建存储桶)
  2. https://docs.amplify.aws/cli/storage/import/(如果您已经在 s3 控制台中创建了存储桶,请遵循此文档)
  3. https://docs.amplify.aws/lib/storage/configureaccess/q/platform/android/ (上传文件前必须添加StorageUploadFileOptions)
于 2021-09-08T14:37:23.137 回答