【发布时间】:2017-08-30 22:31:43
【问题描述】:
我已使用以下代码通过 Android 将图像上传到 s3 存储桶。
AmazonS3 s3client = new AmazonS3Client(new BasicAWSCredentials(context.getString(R.string.accesskey),context.getString(R.string.secretkey)));
PutObjectResult result = s3client.putObject(new PutObjectRequest(bucketName, amazonfilepath, file).withAccessControlList(acl));
当我在亚太地区(新加坡)地区创建存储桶时,它工作正常。 但是我必须将存储桶的区域更改为亚太地区(孟买),然后它会抛出错误。
亚马逊 s3 图片 上传:com.amazonaws.services.s3.model.AmazonS3Exception: 不支持您提供的授权机制。请用 AWS4-HMAC-SHA256。 (服务:Amazon S3;状态代码:400;错误代码: 无效请求;请求 ID:85D0346520B14007),S3 扩展请求 ID: gC67avqeowqS4+X+2qkBxzLxfj9ABVV22zWgPcm/rZBKC0RIso201+eMsvBsqdnH+8n0V9RI0J8=
【问题讨论】:
-
嗨,您使用 BasicAWSCredentials 的用例是什么?在应用程序中使用硬编码凭据非常危险,不推荐使用。您可以改用 Cognito Identity 吗?它是一项免费服务,专为移动用例而设计。另外,您能否提及您使用的是什么 SDK 版本?您是否尝试过使用 AWSS3TransferUtility?这很容易用于实现简单的上传用例。
-
嗨 Rohan 感谢您的回答,我使用的是 2.2.13 SDK 版本。亚太地区(孟买)不支持 Cognito Identity。现在我用的是 2.4.0 sdk 版本,问题解决了。
标签: android amazon-web-services amazon-s3