MinIO: 連接 Node.js 到 MinIO

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

👋 歡迎來到 Stackhero 文件!

Stackhero 提供一個即用型的 MinIO Object Storage 解決方案,帶來多項好處,包括:

  • 無限傳輸。
  • 簡單、可預測和透明的定價
  • 使用 HTTPS 保護的可自訂域名(例如,https://object-storage.your-company.com)。
  • 只需點擊即可輕鬆更新
  • 專用私有 VM提供的最佳性能和強大安全性
  • 可用於 🇪🇺 歐洲🇺🇸 美國

節省時間簡化您的生活:只需 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 文檔