MinIO: 将 Node.js 连接到 MinIO

本文档属于入门指南指南的一部分。您可以在此处查看完整指南:如何开始使用 MinIO 进行 S3 兼容的对象存储

👋 欢迎来到 Stackhero 文档!

Stackhero 提供即用型 MinIO 对象存储 解决方案,具有众多优势,包括:

  • 无限制传输。
  • 简单、可预测且透明的定价
  • 使用 HTTPS 保护的可定制域名(例如,https://object-storage.your-company.com)。
  • 只需点击即可轻松更新
  • 私有和专用 VM提供的最佳性能和强大安全性
  • 🇪🇺 欧洲🇺🇸 美国均可用。

节省时间简化您的生活:只需 5 分钟即可试用 Stackhero 的 MinIO 对象存储托管 解决方案!

有两种方法可以将 Node.js 应用程序连接到 MinIO。

首先,安装 Node.js 的 AWS SDK 包:

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' 的存储桶
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 将文件上传到存储桶 '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 文档