2014-10-21 3 views
3

Я использую узел AWS SDK для сохранения изображений на s3. Я получаю следующее сообщение об ошибке, несмотря на то, что ведро существует и у меня есть правильные разрешения:AWS s3 ошибка api: указанный ведро не существует

{ [NoSuchBucket: The specified bucket does not exist] 
    message: 'The specified bucket does not exist', 
    code: 'NoSuchBucket', 
    time: Tue Oct 21 2014 12:32:50 GMT-0400 (EDT), 
    statusCode: 404, 
    retryable: false } 

Мой nodejs код:

var fs = require('fs'); 

var AWS = require('aws-sdk'); //AWS library (used to provide temp credectials to a front end user) 
AWS.config.loadFromPath('./AWS_credentials.json'); //load aws credentials from the  authentication text file 



var s3 = new AWS.S3(); 

fs.readFile(__dirname + '/image.jpg', function(err, data) { 

var params = { 
    Bucket: 'https://s3.amazonaws.com/siv.io', 
    Key: 'something', 
}; 

s3.putObject(params, function(err, data) { 

    if (err) { 

     console.log(err); 

    } else { 
     console.log("Successfully uploaded data to myBucket/myKey"); 
    } 
}); 
}); 

Я также попытался siv.io.s3-сайт -us-east-1.amazonaws.com для названия ведра. Может ли кто-нибудь сообщить мне, что я ошибаюсь? При необходимости я могу предоставить дополнительную информацию.

ответ

5

Ошибка указывает, что ведро еще не существует. По внешнему виду вашего кода имя ведра неверно, поэтому файл не может быть найден. Либо сделайте звонок createBucket(), либо создайте ведро в вашей консоли AWS.

Вы также можете добавить файл, а не просто вызвать вызов API. Проверьте AWS API docs за то, что положить где. Их документы действительно хороши.

Вот что я делаю:

var stream = fs.createReadStream('path/to/file'); 
    stream.on('error', function(error) { 
     seriesCb(error); 
    }); 
    //TODO: Other useful options here would be MD5 hash in the `ContentMD5` field, 
    s3.putObject({ 
     "Bucket": 'siv.io', 
     "Key": 'name_of/new_file', 
     "ContentType": "application/pdf", //might not apply to you 
     "Body": stream 
    }, function(s3err, s3results) { 
     if (s3err) return console.log('Bad stuff. ' + s3err.toString()); 
     console.log("Saved to S3. uri:" + s3uri); 
    }); 
+0

Вы правы. Соглашение о присвоении имен в корзине было неправильным. Соглашение об именах действительно сбивает с толку. Этот [рисунок] (http://i.imgur.com/rWXOwbg.png) показывает, что сработало для меня. – SivaDotRender

Смежные вопросы