PronounsPage/server/cloudServices.ts
2025-08-17 10:46:22 +02:00

42 lines
1.1 KiB
TypeScript

import { S3 } from '@aws-sdk/client-s3';
import type { S3ClientConfig } from '@aws-sdk/client-s3';
export enum SupportedProviders {
AWS = 'aws',
CLOUDFLARE = 'cloudflare',
LOCAL = 'local',
}
export interface S3Config extends S3ClientConfig {
provider: SupportedProviders;
/**
* url under which the stored items are publicly reachable
*/
publicAccess?: string;
}
export const s3Config: S3Config = {
provider: process.env.S3_PROVIDER as SupportedProviders || SupportedProviders.AWS,
region: process.env.S3_REGION || undefined,
credentials: {
accessKeyId: process.env.S3_KEY!,
secretAccessKey: process.env.S3_SECRET!,
},
endpoint: process.env.S3_ENDPOINT || undefined,
publicAccess: process.env.S3_PUBLIC_ACCESS,
};
export const s3BucketParams = {
Bucket: process.env.S3_BUCKET!,
};
export const s3 = new S3(s3Config);
export const awsConfig = {
region: process.env.AWS_REGION,
credentials: {
accessKeyId: process.env.AWS_KEY!,
secretAccessKey: process.env.AWS_SECRET!,
},
};