fix(s3): default S3_REGION to us-east-1 instead of empty string (#495)
The AWS SDK throws "Region is missing" when S3Client is constructed with an empty-string region, so any S3 feature (avatars, attachments, presigned URL generation) is silently broken when S3_REGION is unset — even though .env.example ships it unset and env.ts declares it optional. The schema and the runtime disagreed about whether the var was required. Default to "us-east-1" in createS3Client. S3-compatible providers (MinIO, Backblaze B2, R2, DigitalOcean Spaces, Wasabi) ignore the region entirely; real AWS S3 users should set S3_REGION explicitly to their bucket's actual region (clarified in .env.example). Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -16,8 +16,14 @@ export function createS3Client() {
|
||||
}
|
||||
: undefined;
|
||||
|
||||
// The AWS SDK throws "Region is missing" if region is undefined or
|
||||
// empty string at S3Client construction. Default to "us-east-1" so
|
||||
// S3-compatible providers (MinIO, Backblaze B2, R2, Spaces, Wasabi)
|
||||
// that don't care about region work without forcing operators to
|
||||
// set a meaningless value. Real AWS S3 users should still set
|
||||
// S3_REGION explicitly to their bucket's actual region.
|
||||
return new S3Client({
|
||||
region: process.env.S3_REGION ?? "",
|
||||
region: process.env.S3_REGION ?? "us-east-1",
|
||||
endpoint: process.env.S3_ENDPOINT ?? "",
|
||||
forcePathStyle: process.env.S3_FORCE_PATH_STYLE === "true",
|
||||
credentials,
|
||||
|
||||
Reference in New Issue
Block a user