pages s3
This commit is contained in:
parent
1a6d0dd6bf
commit
bb3ad20c24
49
lib/s3.ts
49
lib/s3.ts
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user