Android-Amplify: 使用Amplify上传/下载文件到AWS S3

4
我想开发一个简单的Android应用程序,将图像文件上传到已创建的AWS S3存储桶中。如果我搜索,所有最新的AWS文档都会重定向我使用Amplify框架。我不理解这里描述的文件上传文档。我不明白在哪里可以提供存储桶名称、IAM凭证等信息。我也找不到任何视频教程。为什么AWS强制使用Amplify而没有提供适当的文档呢? 这里提到要使用Amplify CLI配置所有细节,并使用以下命令推送更改: amplify add storage 但是,如果我们想以编程方式添加存储桶名称、用户详细信息等详细信息,我们该怎么做?请给我提供一步一步的详细信息,无论是使用Amplify框架还是旧的AWS Android SDK,在没有Cognito的情况下上传文件。

运行amplify init并在那里添加存储,这可能是最简单的方法。 - dfranca
2个回答

6

有几种方法可以从Android设备上传文件到S3。以下是其中的一些方法。

使用Amplify Android

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

使用AWS SDK for Android

如果以上两种方法都不符合您的需求,您可以使用AWS SDK for Android中的老版本TransferUtility。以下是TransferUtility示例用法

AWS SDK for Android, 无Cognito

如您所提到的,上述文档使用了AWSMobileClient,它是Amazon Cognito的一个接口。但是,您可以使用CredentialsProvider的任何实现进行身份验证;AWSMobileClient只是证书提供者的一个示例。

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

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)

0

Aws - 适用于 Android 的 Amplify,使用它我们可以执行 AWS 操作,这里我将文件上传到 S3 存储桶中。

让我分享实现此操作所需的基本文档。

关于基本的 Amplify 设置:

  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)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接