0

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任意の助けをいただければ幸いです、ありがとう。

4

2 に答える 2

2

ユーザーは、root アカウント IAMとは異なります。SECRET_KEY

IAM アカウントを作成したときに、組み合わせて使用​​する必要があるアカウントのACCESS_KEY_IDとの両方を受け取っているはずです。SECRET_KEY表示されたエラーは、キーの不一致またはいずれかのキーの入力ミスを示しています。

于 2012-10-05T04:28:48.410 に答える