1
1

S3互換OSS MinIO&Node.jsでローカル開発

Posted at

はじめに

最近、開発のためにMinIOを導入したが、Node.jsのaws-sdkでMinIOを操作するサンプルコードがなかなか見つからなくて少し苦労したので、備忘録のために投稿します。
(AWS CLIやNode.jsの@aws-sdk/client-s3でMinIOを操作するサンプルはたくさんある)

前半はMinIOの導入方法で、本題は後半の Node.jsでMinIOを操作(本題)です。

MinIOを導入

1. docker-compose.yamlファイルを用意する

docker-compose.yaml
version: '3.9'

services:
  minio:
    image: quay.io/minio/minio:latest
    container_name: example-minio
    environment:
      MINIO_ROOT_USER: root
      MINIO_ROOT_PASSWORD: password
    command: server --console-address ":9001" /data
    ports:
      - 9000:9000
      - 9001:9001

2. コンテナを起動

docker-compose up

これでMinIOが http://localhost:9000 で稼働する。
また、管理画面が http://localhost:9001 で稼働する。

MinIO管理画面にログイン

ブラウザで http://localhost:9001 にアクセスすると下記の画面が表示される。
Username/Passwordはdocker-compose.yamlに設定したroot/password

image.png

Node.jsでMinIOを操作(本題)

以下のコードでMinIOにアップロードしたファイルをダウンロードできる

test.js
const AWS = require('aws-sdk');

const s3 = new AWS.S3({
  accessKeyId: "root",
  secretAccessKey: "password",
  endpoint: "http://localhost:9000",
  s3ForcePathStyle: 'true',
  signatureVersion: 'v4',
})

const bucketName = "test"
const fileName = "sample.png"
const config = { Bucket: bucketName, Key: fileName }

(async () => {
    const file = await s3.getObject(config).promise()
    const { Body } = file
    // 取得したファイルをBase64に変換する
    const base64Result = Body.toString('base64');
})

実行方法

node test.js

おわりに

昔は他のS3互換のOSSをローカルの開発に利用していたが、管理画面があるMinIOが圧倒的に便利と感じた

参考

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1