我需要将 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 完成