diff --git a/services/capture/src/s3/client.js b/services/capture/src/s3/client.js new file mode 100644 index 0000000..ed85930 --- /dev/null +++ b/services/capture/src/s3/client.js @@ -0,0 +1,32 @@ +import { S3Client } from '@aws-sdk/client-s3'; +import { Upload } from '@aws-sdk/lib-storage'; + +const s3Client = new S3Client({ + endpoint: process.env.S3_ENDPOINT, + region: process.env.AWS_REGION || 'us-east-1', + credentials: { + accessKeyId: process.env.AWS_ACCESS_KEY_ID, + secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY, + }, + forcePathStyle: true, +}); + +/** + * Create an upload stream for streaming data to S3 + * @param {string} bucket - S3 bucket name + * @param {string} key - S3 object key + * @param {Stream} body - ReadableStream to upload + * @returns {Promise} Upload promise + */ +export function createUploadStream(bucket, key, body) { + return new Upload({ + client: s3Client, + params: { + Bucket: bucket, + Key: key, + Body: body, + }, + }).done(); +} + +export default s3Client;