MinIO: 連接 Node.js 到 MinIO

本文件是入門指南指南的一部分。請在此處查看完整指南:如何開始使用 MinIO 作為 S3 兼容的物件存儲

👋 歡迎來到 Stackhero 文件中心!

Stackhero 提供一個即時可用的 MinIO Object Storage 平台,專為高可靠性與高速效能設計。主要優勢包括:

  • 無限制資料傳輸,無任何隱藏費用。
  • 簡單、可預測且透明的定價
  • HTTPS 保護的自訂網域名稱(例如,https://object-storage.your-company.com)。
  • 一鍵式、無需人工操作的無縫更新
  • 專屬私有基礎架構上的高效能安全性
  • 支援🇪🇺 歐洲🇺🇸 美國地區。

簡化您的工作流程,縮短部署時間:您只需 5 分鐘即可完成 Stackhero MinIO Object Storage hosting 的部署。

有兩種方法可以將 Node.js 應用程序連接到 MinIO。

首先,安裝 AWS SDK for Node.js 包:

npm install aws-sdk

以下是一個示例,展示如何使用 AWS SDK 連接到 MinIO:

const process = require('process');
const AWS = require('aws-sdk');

const s3 = new AWS.S3({
  accessKeyId: 'YOUR_ACCESS_KEY',
  secretAccessKey: 'YOUR_SECRET_KEY',
  endpoint: 'https://<XXXXXX>.stackhero-network.com',
  s3ForcePathStyle: true, // 與 MinIO 一起使用時需要
  signatureVersion: 'v4'
});

// putObject 操作
s3.putObject(
  { Bucket: 'testbucket', Key: 'testobject', Body: 'Hello from MinIO!' },
  (err, data) => {
    if (err)
      console.log(err);
    else
      console.log('Successfully uploaded data to testbucket/testobject');
  }
);

// getObject 操作
const file = require('fs').createWriteStream('/tmp/mykey');
s3.getObject({ Bucket: 'testbucket', Key: 'testobject' })
  .on('httpData', chunk => file.write(chunk))
  .on('httpDone', () => file.end())
  .send();

有關更多詳細信息,請訪問 MinIO Node.js 文檔

如果您更喜歡使用 MinIO SDK for Node.js,請使用 npm 安裝:

npm install minio

以下是一個示例,展示如何使用 MinIO SDK for Node.js 連接到 MinIO:

const process = require('process');
const Minio = require('minio');

// 使用端點和訪問密鑰實例化 MinIO 客戶端
const minioClient = new Minio.Client({
  endpoint: '<XXXXXX>.stackhero-network.com',
  port: 443,
  useSSL: true,
  accessKeyId: 'YOUR_ACCESS_KEY',
  secretAccessKey: 'YOUR_SECRET_KEY',
});

// 要上傳的文件
const file = '/tmp/photos-europe.tar';

// 創建一個名為 'europetrip' 的 bucket
minioClient.makeBucket(
  'europetrip',
  'us-east-1',
  err => {
    if (err) return console.log(err);

    console.log('Bucket created successfully in "us-east-1".');

    const metaData = {
      'Content-Type': 'application/octet-stream',
      'X-Amz-Meta-Testing': 1234,
      'example': 5678
    };
    // 使用 fPutObject API 將文件上傳到 bucket 'europetrip'
    minioClient.fPutObject(
      'europetrip',
      'photos-europe.tar',
      file,
      metaData,
      (err, etag) => {
        if (err) return console.log(err);
        console.log('File uploaded successfully.');
      }
    );
  }
);

有關更多信息,請參閱 MinIO Node.js SDK 文檔