You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Add support for Azure Blob Storage integration alongside S3 storage, … (#27)
* Add support for Azure Blob Storage integration alongside S3 storage, including provider selection logic and configuration validation
* Add shim to ensure Web Crypto API compatibility on Node.js 18 and older
* refactor S3 upload logic and add azure envs to .env.example
---------
Co-authored-by: Dilushan <dilushan@meetrix.io>
Copy file name to clipboardExpand all lines: README.md
+67-4Lines changed: 67 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -317,14 +317,26 @@ The following environment variables configure Redis connectivity:
317
317
318
318
### Recording Upload Configuration
319
319
320
-
Meeting Bot automatically uploads meeting recording to S3-compatible bucket storage when a meeting end. This feature is enabled by default and supports various cloud storage providers:
320
+
Meeting Bot automatically uploads the meeting recording to object storage when a meeting ends. You can choose between S3-compatible storage and Microsoft Azure Blob Storage at runtime using a configuration flag.
321
321
322
322
-**AWS S3** - Amazon Web Services Simple Storage Service
323
323
-**GCP Cloud Storage** - Google Cloud Platform S3-compatible storage
#### Environment Variables for Upload Configuration
328
+
#### Storage Provider Selection
329
+
330
+
Select the storage backend without code changes:
331
+
332
+
```bash
333
+
# s3 (default) or azure
334
+
STORAGE_PROVIDER=s3
335
+
```
336
+
337
+
When `STORAGE_PROVIDER` is not set, it defaults to `s3` to preserve backward compatibility.
338
+
339
+
#### Environment Variables for S3-Compatible Upload Configuration
328
340
329
341
| Variable | Description | Default | Required |
330
342
|----------|-------------|---------|----------|
@@ -365,14 +377,65 @@ S3_REGION=us-west-2
365
377
S3_USE_MINIO_COMPATIBILITY=true
366
378
```
367
379
380
+
#### Azure Blob Storage Configuration
381
+
382
+
If you prefer Azure Blob Storage, set `STORAGE_PROVIDER=azure` and configure one of the supported authentication methods below. The bot will preserve the same folder structure and naming used by S3.
383
+
384
+
Required:
385
+
386
+
-`AZURE_STORAGE_CONTAINER` — Target container name
1.**Automatic Upload**: When a meeting recording completes, the bot automatically uploads the file to the configured S3-compatible bucket
429
+
1.**Automatic Upload**: When a meeting recording completes, the bot automatically uploads the file to the configured object storage (S3-compatible or Azure Blob)
371
430
2.**File Naming**: Recordings are uploaded with descriptive names including meeting details and timestamps
372
431
3.**Error Handling**: If upload fails, the bot will automatically retry upload
373
432
4.**Cleanup**: Local recording files are cleaned up after successful upload
374
433
375
-
**Note**: The upload feature is enabled by default when S3 environment variables are configured. No additional configuration is required.
434
+
Notes:
435
+
436
+
- The default object key layout is: `meeting-bot/{userId}/{fileName}{extension}` (e.g., `meeting-bot/1234/My Meeting - 2025-11-13 14-42.webm`). This same layout is used for both S3 and Azure to ensure parity.
437
+
- When `STORAGE_PROVIDER=azure` is set and Azure environment variables are provided, the upload will go to Azure Blob Storage instead of S3.
438
+
- Signed URL generation for Azure uses SAS tokens with a configurable TTL via `AZURE_SIGNED_URL_TTL_SECONDS`.
0 commit comments