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!, }, };