Загрузка файла amazon s3 возвращает ошибку 404

Пытаюсь скачать файл в s3. Я следил за библиотекой s3 на https://www.npmjs.com/package/s3, но не смог скачать файл. И сообщение об ошибке непонятно. Он говорит: «Ошибка: код состояния http 404». Что мне не хватает?

var fs = require('fs');
var s3 = require('s3');
var stdio = require('stdio');

var client = s3.createClient({
  s3Options: {
    accessKeyId: "access key id",
    secretAccessKey: "secret access key",
  },
});



var params = {
    localFile: "home/download",

    s3Params: {
      Bucket:  "bucketname",
      Key: "/folder1/folder2/folder3/fileName",
    },
};

var downloader = client.downloadFile(params);
downloader.on('error', function(err) {
  console.error("unable to download:", err.stack);
  //err.stack returns as "Error: http status code 404"
});
downloader.on('progress', function() {
  console.info("progress", downloader.progressAmount, downloader.progressTotal);
});
downloader.on('end', function() {
  console.info("done downloading");
});

404 означает, что файл не найден. Вы уверены, что файл там? Что произойдет, если вы перейдете на него вручную?

ThomasVdBerge 03.07.2018 11:08

Разрешили ли вы доступ к сегменту с помощью IAM или политики сегмента?

Matt D 03.07.2018 11:34

Фактически, я могу получить доступ к файлу с DragonDisk с моим секретным ключом доступа и идентификатором.

sergerde 03.07.2018 12:34
Key не должен иметь ведущую косую черту. Корнем корзины является пустая строка, а не /.
Michael - sqlbot 04.07.2018 04:04
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
4
622
1

Ответы 1

Я отлаживаю ваш код и помещаю частный файл на S3 и получаю ту же ошибку при использовании упомянутого выше кода. Проблема с инициализацией клиента s3 в том, как я исправил клиента s3.

Если вы читаете документацию, в них упоминается, как настроить с AWS-S3. https://www.npmjs.com/package/s3#create-a-client-from-existing-awss3-object

var fs = require('fs');
var s3 = require('s3');
var stdio = require('stdio');
var AWS =require('aws-sdk')

var client1 = s3.createClient({
  maxAsyncS3: 20,     // this is the default
  s3RetryCount: 3,    // this is the default
  s3RetryDelay: 1000, // this is the default
  multipartUploadThreshold: 20971520, // this is the default (20 MB)
  multipartUploadSize: 15728640, // this is the default (15 MB)
  s3Options: {
    accessKeyId: "***********",
    secretAccessKey: "********"
  },
});




// initilize wtih s3 client
var awsS3Client = new AWS.S3(client1);
var options = {
  s3Client: awsS3Client,
  // more options available. See API docs below.
};
var client = s3.createClient(options);

var params = {
  // local directory with file name
    localFile: "./test.jpg",

    s3Params: {
      // bucket name 
      Bucket:  "cf-logs.test.com",
      // folder and file name to download
      Key: "test/Horse Racing.jpg",
    },
};

var downloader = client.downloadFile(params);
downloader.on('error', function(err) {
  console.error("unable to download:", err.stack);
  //err.stack returns as "Error: http status code 404"
});
downloader.on('progress', function() {
  console.info("progress", downloader.progressAmount, downloader.progressTotal);
});
downloader.on('end', function() {
  console.info("done downloading");
});

Другие вопросы по теме