我正在使用安卓设备和亚马逊的 S3 存储系统。
我有一个主用户帐户,并且我创建了代表我的用户访问存储的子用户。
通常,我会使用以下操作与我的主要用户访问 S3:
AmazonS3Client s3Client = new AmazonS3Client(
new BasicAWSCredentials(ACCESS_KEY_ID, SECRET_KEY));
Bucket deviceBucket = s3Client.createBucket(bucketName);
其中 ACCESS_KEY_ID 和 SECRET_KEY 是为我的主要用户帐户提供的。
我正在尝试对我的 IAM 用户“Alice”执行此操作。这个用户被赋予了它自己的 ACCESS_KEY_ID。使用上面的代码,我使用 Alice 的 ACCESS_KEY_ID 和上面的相同 SECRET_KEY。用户 Alice 没有特殊的权限或限制,因此我假设用户可以创建存储桶。
调用createBucket的时候报错:
08-08 12:05:55.246: E/AndroidRuntime(2544): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { dat=content://media/external/images/media/1 }} to activity {com.amazonaws.demo.s3uploader/com.amazonaws.demo.s3uploader.S3UploaderActivity}: Status Code: 403, AWS Service: Amazon S3, AWS Request ID: (somevalue), AWS Error Code: SignatureDoesNotMatch, AWS Error Message: The request signature we calculated does not match the signature you provided. Check your key and signing method., S3 Extended Request ID: (some value)
我似乎找不到另一种使用 IAM 用户通过 Android API 对 S3 进行身份验证的方法。
任何帮助表示赞赏,谢谢。