Пытаюсь скачать файл в 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");
});
Разрешили ли вы доступ к сегменту с помощью IAM или политики сегмента?
Фактически, я могу получить доступ к файлу с DragonDisk с моим секретным ключом доступа и идентификатором.
Key не должен иметь ведущую косую черту. Корнем корзины является пустая строка, а не /.





Я отлаживаю ваш код и помещаю частный файл на 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");
});
404 означает, что файл не найден. Вы уверены, что файл там? Что произойдет, если вы перейдете на него вручную?