fix(mnemosyne): use STORAGES config for S3 health check
Update `_check_s3` to read S3 settings from the `STORAGES` dict instead of deprecated top-level `AWS_*` settings. Skip the check when local storage is enabled and return an error early if no bucket is configured.
This commit is contained in:
@@ -58,17 +58,25 @@ def _check_s3() -> str | None:
|
|||||||
import botocore.exceptions
|
import botocore.exceptions
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
|
||||||
|
if getattr(settings, "USE_LOCAL_STORAGE", False):
|
||||||
|
return None
|
||||||
|
|
||||||
|
opts = settings.STORAGES.get("default", {}).get("OPTIONS", {})
|
||||||
|
bucket = opts.get("bucket_name", "")
|
||||||
|
if not bucket:
|
||||||
|
return "No S3 bucket configured"
|
||||||
|
|
||||||
try:
|
try:
|
||||||
client = boto3.client(
|
client = boto3.client(
|
||||||
"s3",
|
"s3",
|
||||||
endpoint_url=settings.AWS_S3_ENDPOINT_URL or None,
|
endpoint_url=opts.get("endpoint_url") or None,
|
||||||
aws_access_key_id=settings.AWS_ACCESS_KEY_ID or None,
|
aws_access_key_id=opts.get("access_key") or None,
|
||||||
aws_secret_access_key=settings.AWS_SECRET_ACCESS_KEY or None,
|
aws_secret_access_key=opts.get("secret_key") or None,
|
||||||
region_name=settings.AWS_S3_REGION_NAME or None,
|
region_name=opts.get("region_name") or None,
|
||||||
use_ssl=getattr(settings, "AWS_S3_USE_SSL", True),
|
use_ssl=opts.get("use_ssl", True),
|
||||||
verify=getattr(settings, "AWS_S3_VERIFY", True),
|
verify=opts.get("verify", True),
|
||||||
)
|
)
|
||||||
client.head_bucket(Bucket=settings.AWS_STORAGE_BUCKET_NAME)
|
client.head_bucket(Bucket=bucket)
|
||||||
return None
|
return None
|
||||||
except botocore.exceptions.ClientError as e:
|
except botocore.exceptions.ClientError as e:
|
||||||
return f"HTTP {e.response['Error']['Code']}"
|
return f"HTTP {e.response['Error']['Code']}"
|
||||||
|
|||||||
Reference in New Issue
Block a user