Рубрики
Без рубрики

Minio Como Alternativa AO S3 EM Applicações узел

CASTILIDADE EM КРИЛЬ КУРС ERVIR ARQUIVOS PARA O S3 DA Amazon é Algo Fantástico. Armazenar obje … Теги с минионом, JavaScript, учебником, PTBR.

CASTILIDADE EM КРИЛЬ КУРС ERVIR ARQUIVOS PARA O S3 DA Amazon é Algo Fantástico. Armazenar Objetos, AO Invés dum Sistema de Arquivos, Diminui A Copperyidade E TRAZ UMA Eficiência à Esse Tipo de Operação.

UM DOS Flanceas Da Amazon é O Seu Valor. EM Projetos Menores, que não se englishiabiama da Grande Disponibilidade da Plataforma, é Comum Adotar – Pelo Menos Para Hospedar Applação – цифровой океан. Nesse Artigo, Vamos Utilizar UMA “S3 Própria” POR Meio Do Minio Em UMA API Básica Para Загрузить De Arquivos, Feita Com Node.js e JavaScript.

Curty Uma Trilha Sonora? ЕС Fiz Esse Artigo Ouvindo Список воспроизведения Essa Нет Spotify .

Сегундо А Prória Documentação o minio. É UMA Tecnologia de Amarazenamento Baseada Em Objetos, De Alta Performance. ELE E ESCRITO EM GO E TEM UMA API Compatível Com O AWS S3.

Vale destacar a questão da compatibilidade. COMO VEREMOS, É OSSíLEVE ATÉ CONFIGURARAR O CLINGYE DO S3 DA SDK PARA JavaScript de modo que eletize, na verdade, o minio.

Aqui, Suponho que que vovoua UM Projeto Configurado Para Utilizar ES6 Модули – UMA Forma Smple É Por Meio Do Babel. Caso точный, используемый Эсте шаблон Отказ

O PAMEIRO PASSO É КРИАР УМА API PARA QUE TASPAMOS TEATAR, NO FUTURO, FUNCALIADADE. Utilizando Express, Teríamos Algo Assim:

import express from 'express';
import { S3 } from 'aws-sdk';
import cors from 'cors';
import morgan from 'morgan';

const app = express();
app.use(cors());
app.use(morgan('dev'));

app.listen(3000, () => console.log('[READY]')); 

DEPOIS DISOS, ECRAIO CRAR UMA ROTA QUE TRATE O Загрузить де Arquivos Sideuais. Aqui Faremos Uso Do Multer:

app.route('/upload').post(
  multer({ storage: multer.memoryStorage() }).single('file'),
  uploadHandler,
);

Загрузить обработчик

É nessa função em utilizamos api da s3:

const uploadHandler = async (req, res) => {
  try {
    await s3.putObject({
      Bucket: 'tests',
      Key: req.file.originalname,
      Body: req.file.buffer,
    }).promise();
    return res
      .status(201)
      .send({
        message: `File "${req.file.originalname}" uploaded`
      });
  } catch (e) {
    console.log(e);
      return res
        .status(500)
        .send({ error: e.message })
  }
}

E Assim Criamos o objeto S3 :

const s3 = new S3({
  endpoint: 'http://play.minio.io:9000',
  accessKeyId: 'Q3AM3UQ867SPQQA43P2F',
  secretAccessKey: 'zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG',
  sslEnabled: false,
  s3ForcePathStyle: true,
});

Nesse Caso, как Credenciais São Para o Servidor de Testes Do Minio Отказ

POR Que Não Usar SDK ДО MINIO PARA JS? Diga-Se de Passagem, Por Design, Não Existee Muita Diferença, Mas Aqui Estou Fazendo Isso Para Mastrar Como Adaptar, SEM PARIUTAMEADEE Неньхума Муданча Н. А. Эструтура делает проще, о Серьси Утилизадо. Isso Também É til Para Utilizar Pocotes Como O Multer-S3 Отказ

DESSA FORMA, O Código Complemento Seria O Seguinte:

import express from 'express';
import { S3 } from 'aws-sdk';
import cors from 'cors';
import morgan from 'morgan';

const s3 = new S3({
  endpoint: 'http://play.min.io:9000',
  accessKeyId: 'Q3AM3UQ867SPQQA43P2F',
  secretAccessKey: 'zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG',
  sslEnabled: false,
  s3ForcePathStyle: true,
});

const app = express();
app.use(cors());
app.use(morgan('dev'));

const uploadHandler = async (req, res) => {
  try {
    await s3.putObject({
      Bucket: 'tests',
      Key: req.file.originalname,
      Body: req.file.buffer,
    }).promise();
    return res
      .status(201)
      .send({
        message: `File "${req.file.originalname}" uploaded`
      });
  } catch (e) {
    console.log(e);
      return res
        .status(500)
        .send({ error: e.message })
  }
}

app.route('/upload').post(
  multer({ storage: multer.memoryStorage() }).single('file'),
  uploadHandler,
);

app.listen(3000, () => console.log('[READY]')); 

Caso Vovê Não Точный Utilizar API DA S3, альгумас Alterações Seriam Bearsárias. A PAMEIRA é é prória diftição do objeto “S3”. Poderíamos Substituir Pelo Seguinte:

const minioClient = new Minio.Client({
    endPoint: 'play.min.io',
    port: 9000,
    useSSL: true,
    accessKey: 'Q3AM3UQ867SPQQA43P2F',
    secretKey: 'zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG'
});

SEGUNDA SERIA NA UTILIZAçãO DESSE CLINGEE PARA REALIZAR O Загрузить, Doctro Da Função UploadHandler, Para Seguinte Forma:

//...
await minioClient.putObject(
  'tests',
  req.file.originalname,
  req.file.buffer,
);

Caso Vovê Execute o Código CriaDo, É Assível Realizar Загрузить de Arquivos Por Meio de Requisições http Para localhost: 3000/загрузка Утилизандо multipart/form-data Отказ O Multer FAZ o Trabalho Peasado de modo que temos Total Acesso Ao Arquivo NA Memório (Atravez do Memorystorage).

DITO ISSO, UTILIZAMOS Contudo Contudo a aws da Maneira Contudo a objeto que nos del acesso à abi da s3 é criado com alguns parâmetros – Собретадо О Конечная точка, que Release Url Do Servidor Minio De Intereste. Соблюдайте Que Quase Nenhuma Alteração é MainiaRia, UMA VEZ Que o Minio Foi Estruturado Para Permitir Esse Tipo de Compatibilidade.

Оригинал: “https://dev.to/dotmendes/minio-como-alternativa-ao-s3-em-aplicacoes-node-3g8f”