Итак, вот код, который я использую для загрузки изображения на сервер, но он работает только один раз
[ответ в комментариях к принятому ответу]
Я не знаю, должен ли я вообще устанавливать конечную точку, во всех примерах в руководствах по s3 даже не упоминаются конечные точки
Я не уверен, что япредполагается создавать новые объекты s3 для каждого файла для загрузки
Если я не установил конечную точку, загрузка всегда завершается неудачно даже с первой попытки (и выдает тот же вывод консоли, что и длявторая загрузка опубликована ниже)
Функция загрузки работает один раз, поэтому я думаю, что это означает, что я правильно установил учетные данные.Но единственный способ заставить его работать снова - перезапустить приложение node.js.Я почти уверен, что скучаю по многим вещам.В частности, я заметил, что при второй загрузке объект s3 хочет подключиться к локальному хосту вместо URL-адреса конечной точки, который я явно установил для него при создании.
function upload_photo(socket, data) {
s3 = new AWS.S3( {endpoint: 'http://s3-ap-southeast-1.amazonaws.com'} );
console.log("s3 endpoint", s3.endpoint); // for testing
var myBucket = 'blackjack-profilepics';
var myKey = socket.player.user_id +".txt";
params = {Bucket: 'blackjack-profilepics', Key: myKey, Body: data };
s3.putObject(params, function(err, data) {
if (err) {
console.log("Error uploading data:",err)
console.log("s3 endpoint", s3.endpoint);
} else {
console.log("Successfully uploaded data to myBucket/%s", myKey);
}
});
А вот вывод консоли для первой и последующих попыток загрузки:
first upload:
0|blackjac | s3 endpoint Endpoint {
0|blackjac | protocol: 'http:',
0|blackjac | host: 's3-ap-southeast-1.amazonaws.com',
0|blackjac | port: 80,
0|blackjac | hostname: 's3-ap-southeast-1.amazonaws.com',
0|blackjac | pathname: '/',
0|blackjac | path: '/',
0|blackjac | href: 'http://s3-ap-southeast-1.amazonaws.com/' }
0|blackjac | done with upload!
0|blackjac | Successfully uploaded data to myBucket/15.txt
second upload:
0|blackjac | s3 endpoint Endpoint {
0|blackjac | protocol: 'http:',
0|blackjac | host: 's3-ap-southeast-1.amazonaws.com',
0|blackjac | port: 80,
0|blackjac | hostname: 's3-ap-southeast-1.amazonaws.com',
0|blackjac | pathname: '/',
0|blackjac | path: '/',
0|blackjac | href: 'http://s3-ap-southeast-1.amazonaws.com/' }
0|blackjac | done with upload!
0|blackjac | Error uploading data: { UnknownEndpoint: Inaccessible host: `blackjack-profilepics.localhost'. This service may not be available in the `ap-southeast-1' region.
0|blackjac | at Request.ENOTFOUND_ERROR (/home/ubuntu/node_modules/aws-sdk/lib/event_listeners.js:456:46)
0|blackjac | at Request.callListeners (/home/ubuntu/node_modules/aws-sdk/lib/sequential_executor.js:105:20)
0|blackjac | at Request.emit (/home/ubuntu/node_modules/aws-sdk/lib/sequential_executor.js:77:10)
0|blackjac | at Request.emit (/home/ubuntu/node_modules/aws-sdk/lib/request.js:683:14)
0|blackjac | at ClientRequest.error (/home/ubuntu/node_modules/aws-sdk/lib/event_listeners.js:295:22)
0|blackjac | at ClientRequest.<anonymous> (/home/ubuntu/node_modules/aws-sdk/lib/http/node.js:89:19)
0|blackjac | at emitOne (events.js:96:13)
0|blackjac | at ClientRequest.emit (events.js:188:7)
0|blackjac | at Socket.socketErrorListener (_http_client.js:310:9)
0|blackjac | at emitOne (events.js:96:13)
0|blackjac | message: 'Inaccessible host: `blackjack-profilepics.localhost\'. This service may not be available in the `ap-southeast-1\' region.',
0|blackjac | code: 'UnknownEndpoint',
0|blackjac | region: 'ap-southeast-1',
0|blackjac | hostname: 'blackjack-profilepics.localhost',
0|blackjac | retryable: true,
0|blackjac | originalError:
0|blackjac | { Error: getaddrinfo ENOTFOUND blackjack-profilepics.localhost blackjack-profilepics.localhost:8000
0|blackjac | at errnoException (dns.js:28:10)
0|blackjac | at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:76:26)
0|blackjac | message: 'getaddrinfo ENOTFOUND blackjack-profilepics.localhost blackjack-profilepics.localhost:8000',
0|blackjac | code: 'NetworkingError',
0|blackjac | errno: 'ENOTFOUND',
0|blackjac | syscall: 'getaddrinfo',
0|blackjac | hostname: 'blackjack-profilepics.localhost',
0|blackjac | host: 'blackjack-profilepics.localhost',
0|blackjac | port: 8000,
0|blackjac | region: 'ap-southeast-1',
0|blackjac | retryable: true,
0|blackjac | time: 2018-06-10T22:15:58.926Z },
0|blackjac | time: 2018-06-10T22:15:58.926Z }
0|blackjac | s3 endpoint Endpoint {
0|blackjac | protocol: 'http:',
0|blackjac | host: 's3-ap-southeast-1.amazonaws.com',
0|blackjac | port: 80,
0|blackjac | hostname: 's3-ap-southeast-1.amazonaws.com',
0|blackjac | pathname: '/',
0|blackjac | path: '/',
0|blackjac | href: 'http://s3-ap-southeast-1.amazonaws.com/' }