This commit is contained in:
alma 2025-05-04 14:30:21 +02:00
parent 1a6d0dd6bf
commit bb3ad20c24

View File

@ -1,13 +1,27 @@
import { S3Client, ListObjectsV2Command, GetObjectCommand, PutObjectCommand, DeleteObjectCommand } from '@aws-sdk/client-s3';
import { getSignedUrl } from '@aws-sdk/s3-request-presigner';
// Simplified S3 configuration with consistent naming
/**
* S3/MinIO Configuration
*
* IMPORTANT: Set these environment variables in your .env file:
*
* MINIO_S3_UPLOAD_BUCKET_URL=https://your-minio-instance.com/
* MINIO_AWS_REGION=your-region
* MINIO_AWS_S3_UPLOAD_BUCKET_NAME=your-bucket-name
* MINIO_ACCESS_KEY=your-access-key
* MINIO_SECRET_KEY=your-secret-key
*
* Alternative credentials (fallback):
* AWS_ACCESS_KEY_ID=your-aws-access-key
* AWS_SECRET_ACCESS_KEY=your-aws-secret-key
*/
export const S3_CONFIG = {
endpoint: process.env.S3_ENDPOINT || 'https://dome-api.slm-lab.net/',
region: process.env.S3_REGION || 'eu-east-1',
bucket: process.env.S3_BUCKET || 'pages',
accessKey: process.env.S3_ACCESS_KEY,
secretKey: process.env.S3_SECRET_KEY,
endpoint: process.env.MINIO_S3_UPLOAD_BUCKET_URL,
region: process.env.MINIO_AWS_REGION,
bucket: process.env.MINIO_AWS_S3_UPLOAD_BUCKET_NAME,
accessKey: process.env.MINIO_ACCESS_KEY || process.env.AWS_ACCESS_KEY_ID,
secretKey: process.env.MINIO_SECRET_KEY || process.env.AWS_SECRET_ACCESS_KEY,
}
// Initialize S3 client with standard configuration
@ -30,6 +44,25 @@ if (S3_CONFIG.accessKey && S3_CONFIG.secretKey) {
// Create S3 client
export const s3Client = new S3Client(s3Config);
// Check for required environment variables
if (!S3_CONFIG.endpoint || !S3_CONFIG.bucket) {
console.error('ERROR: Missing required S3 environment variables!');
console.error('Please make sure your .env file contains:');
console.error('- MINIO_S3_UPLOAD_BUCKET_URL');
console.error('- MINIO_AWS_S3_UPLOAD_BUCKET_NAME');
console.error('- MINIO_ACCESS_KEY or AWS_ACCESS_KEY_ID');
console.error('- MINIO_SECRET_KEY or AWS_SECRET_ACCESS_KEY');
}
// Log configuration for debugging (without exposing credentials)
console.log('S3 Configuration:', {
endpoint: S3_CONFIG.endpoint || 'MISSING!',
region: S3_CONFIG.region || 'MISSING!',
bucket: S3_CONFIG.bucket || 'MISSING!',
hasAccessKey: !!S3_CONFIG.accessKey || 'MISSING!',
hasSecretKey: !!S3_CONFIG.secretKey || 'MISSING!',
});
// Helper functions for S3 operations
// List objects in a "folder" for a specific user
@ -165,10 +198,10 @@ export async function generatePresignedUrl(key: string, expiresIn = 3600) {
Bucket: S3_CONFIG.bucket,
Key: key
});
return await getSignedUrl(s3Client, command, { expiresIn });
} catch (error) {
console.error('Error generating presigned URL:', error);
throw error;
}
}
}