これがバグなのか、それとも SDK の使い方が間違っているのか疑問に思っています。
署名付き URL 生成コードは次のとおりです。
java.util.Date expiration = new java.util.Date();
long milliSeconds = expiration.getTime();
milliSeconds += 1000 * 60 * 60; // Add 1 hour.
expiration.setTime(milliSeconds);
URL url = s3.generatePresignedUrl(userPicturesBucket, "walala", expiration, HttpMethod.PUT);
ただし、これにより、「署名」が間違っている場所に署名済みのulrが生成されます。
Signature=7iw7DfZ3Ed24kQpsV5Hp9VrJ%2BMo%3D
これをテストするには、RESTClient を使用して完全なアドレスで PUT 要求を送信します。SignatureDoesNotMatchという禁止された応答が返されます。
ただし、Amazon S3 Signature Testerを使用して同じリクエストに署名すると、別の「署名」が取得されます
Signature=ztp2nD6gVurYhAvQojpZhReSuwE%3D
ただし、これは機能し、PUT 要求を送信すると 200 応答が返され、オブジェクトが作成されます。
私の質問は、これは Java バグの amazon sdk ですか? または、なぜ署名が異なるのですか。
ありがとう