【发布时间】:2019-12-17 10:58:13
【问题描述】:
我需要将 Android 中的一个文件上传到 s3 存储桶。 我们想使用 Cognito 用户池对上传进行身份验证。
执行此操作的标准方法是使用 Amazon Amplify SDK 中的存储 API。
问题是我上传需要报告上传进度,而Amplify Storage不允许你设置监听器来观察Android中的进度。
这让我需要使用TransferUtility。
我应该如何使用 Cognito 和 TransferUtility 对上传操作进行身份验证?
目前我正在做:
val credentials = CognitoCachingCredentialsProvider(
context,
"eu-west-1:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
Regions.US_WEST_1)
val s3Client = AmazonS3Client(credentials, Region.getRegion(Regions.US_WEST_1))
val transferUtility = TransferUtility.builder()
.context(context)
.s3Client(s3Client)
.build()
但我得到了 403:
com.amazonaws.services.s3.model.AmazonS3Exception: Access Denied (Service: Amazon S3; Status Code: 403; Error Code: AccessDenied; Request ID: XXXXXXXXXXX), S3 Extended Request ID: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXx=
我真的很难获得任何文档,因为似乎 Storage API 现在比 TransferUtility 更受欢迎,并且与 Cognito 用户池或用户身份有关的所有事情都通过 Amplitude Storage 完成
【问题讨论】:
标签: android amazon-web-services amazon-cognito incognito-mode awss3transferutility