公式のsdkを使ってpresigned urlを発行してブラウザからs3にファイルをアップロードしよう試みたところ、
403 Access Denied SignatureDoesNotMatch が帰ってきます。
他のメソッド(GET, DELETE)では、同じ鍵を使って生成したpresigned urlを使って成功しています。
また、presigned urlを使わずに直接putObjectを呼んだ際にも成功します。
SignatureDoesNotMatchの原因は何だと考えられるでしょうか。
Javascriptはほとんどさわったことがありません。
lang
1 2$(document).ready(function () { 3 AWS.config.update({ 4 accessKeyId: AWS_ACCESS_KEY_ID, 5 secretAccessKey: AWS_SECRET_ACCESS_KEY 6 }); 7 AWS.config.region = AWS_S3_REGION; 8 9 var fileChooser = document.getElementById('file-chooser'); 10 var button = document.getElementById('upload'); 11 button.addEventListener('click', function () { 12 var file = fileChooser.files[0]; 13 if (file) { 14 var params = {Bucket: BUCKET_NAME, Key: file.name, ContentType: file.type, Body: file}; 15 var signed_url = new AWS.S3().getSignedUrl('putObject', params); 16 17 $.ajax({ 18 url: signed_url, 19 type: 'PUT', 20 data: file, 21 contentType: file.type, 22 processData: false 23 }) 24 .done(function (data, a, b) { 25 console.log(data); 26 }); 27 } 28 }) 29}) 30
lang
1 2<!DOCTYPE html> 3 4<html lang='ja'> 5 <head> 6 <script src="https://sdk.amazonaws.com/js/aws-sdk-2.1.18.min.js"></script> 7 <script src="http://code.jquery.com/jquery-1.11.2.min.js"></script> 8 <script src="/static/main.js" type="text/javascript"></script> 9 </head> 10 11 <body> 12 <input id='file-chooser' type='file' /> 13 <button id='upload'>upload</button> 14 </body> 15</html> 16
よろしくお願いします。

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/03/25 10:25
2015/03/26 01:47