Android デバイスと Amazon の 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 が与えられました。上記のコードを使用して、上記と同じ SECRET_KEY で Alice の ACCESS_KEY_ID を使用します。ユーザー 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 に認証する別の方法を見つけることができないようです。
A任意の助けをいただければ幸いです、ありがとう。