【问题标题】:Authorization issue when uploading image to the s3 bucket using Android使用 Android 将图像上传到 s3 存储桶时的授权问题
【发布时间】: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


【解决方案1】:

我在 SDK 下也被使用过。

compile 'com.amazonaws:aws-android-sdk-s3:2.2.13' 

现在使用低于 sdk 的版本可以正常工作。

compile 'com.amazonaws:aws-android-sdk-s3:2.4.0'

【讨论】:

    【解决方案2】:

    已确认,将 sdk 更新到最新版本已修复此问题。就我而言,

    implementation 'com.amazonaws:aws-android-sdk-core:2.6.13'
    implementation 'com.amazonaws:aws-android-sdk-s3:2.6.13'
    

    如果您有同样的问题,请检查您的应用级 build.gradle 文件中的 aws sdk 版本。

    只是回答,以防有人来这里搜索。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-02-04
      • 2020-12-30
      • 2018-03-11
      • 2020-02-14
      • 2016-04-24
      • 1970-01-01
      • 2018-01-07
      相关资源
      最近更新 更多