import { S3Client, PutObjectCommand } from '@aws-sdk/client-s3'; function getS3Client() { const endpoint = process.env.S3_ENDPOINT; // e.g. http://:9000 const region = process.env.S3_REGION || 'us-east-1'; const accessKeyId = process.env.S3_ACCESS_KEY || ''; const secretAccessKey = process.env.S3_SECRET_KEY || ''; if (!endpoint || !accessKeyId || !secretAccessKey) { throw new Error('Missing S3 config: S3_ENDPOINT, S3_ACCESS_KEY, S3_SECRET_KEY'); } return new S3Client({ region, endpoint, forcePathStyle: true, credentials: { accessKeyId, secretAccessKey }, }); } export async function uploadBuffer(params: { bucket: string; key: string; body: Buffer; contentType?: string; }) { const s3 = getS3Client(); const cmd = new PutObjectCommand({ Bucket: params.bucket, Key: params.key, Body: params.body, ContentType: params.contentType || 'application/octet-stream', }); await s3.send(cmd); return { bucket: params.bucket, key: params.key }; }