29 lines
949 B
JavaScript
29 lines
949 B
JavaScript
const { S3Client } = require('@aws-sdk/client-s3');
|
|
require('dotenv').config();
|
|
|
|
// minIO
|
|
const onPremiseClient = new S3Client({
|
|
region: 'auto',
|
|
endpoint: process.env.MINIO_ENDPOINT,
|
|
forcePathStyle: true, // 중요! MinIO는 path-style 요청을 기본으로 사용
|
|
credentials: {
|
|
accessKeyId: process.env.MINIO_ACCESSKEYID,
|
|
secretAccessKey: process.env.MINIO_SECRETACCESSKEY,
|
|
},
|
|
});
|
|
|
|
// 로컬 MinIO는 대문자 버킷명을 허용하지 않으므로, 모든 S3 요청의 Bucket 파라미터를 소문자로 변환하는 미들웨어 주입
|
|
onPremiseClient.middlewareStack.add(
|
|
(next, context) => async (args) => {
|
|
if (args.input && args.input.Bucket) {
|
|
args.input.Bucket = args.input.Bucket.toLowerCase().replaceAll('_', '-');
|
|
}
|
|
return next(args);
|
|
},
|
|
{
|
|
step: 'initialize',
|
|
name: 'lowercaseBucketName'
|
|
}
|
|
);
|
|
|
|
module.exports = onPremiseClient; |