diff --git a/api/config/settings/common.py b/api/config/settings/common.py index 800f7bf23453c6c6976b19e130f5edc773b3caf1..5d65366864470578c353d67ca1f96b7ec348c8c9 100644 --- a/api/config/settings/common.py +++ b/api/config/settings/common.py @@ -320,10 +320,11 @@ if AWS_ACCESS_KEY_ID: AWS_SECRET_ACCESS_KEY = env("AWS_SECRET_ACCESS_KEY") AWS_STORAGE_BUCKET_NAME = env("AWS_STORAGE_BUCKET_NAME") AWS_S3_ENDPOINT_URL = env("AWS_S3_ENDPOINT_URL", default=None) + AWS_S3_REGION_NAME = env("AWS_S3_REGION_NAME", default=None) + AWS_S3_SIGNATURE_VERSION = "s3v4" AWS_LOCATION = env("AWS_LOCATION", default="") DEFAULT_FILE_STORAGE = "storages.backends.s3boto3.S3Boto3Storage" - # See: https://docs.djangoproject.com/en/dev/ref/contrib/staticfiles/#std:setting-STATICFILES_DIRS STATICFILES_DIRS = (str(APPS_DIR.path("static")),) diff --git a/changes/changelog.d/826.bugfix b/changes/changelog.d/826.bugfix new file mode 100644 index 0000000000000000000000000000000000000000..6cf7c25cb9dbb7536fc783283de5ff6eeb27bec7 --- /dev/null +++ b/changes/changelog.d/826.bugfix @@ -0,0 +1 @@ +Added env variable to set AWS region and signature version to serve media without proxy (#826) diff --git a/deploy/env.prod.sample b/deploy/env.prod.sample index 9fd1720494f7c891c55bdcb0965651f1df2453b0..b7b0301dadff33f34d288ac78a9684be73663998 100644 --- a/deploy/env.prod.sample +++ b/deploy/env.prod.sample @@ -160,3 +160,12 @@ AWS_STORAGE_BUCKET_NAME= # the full URL to the storage server. Example: # AWS_S3_ENDPOINT_URL=https://minio.mydomain.com # AWS_S3_ENDPOINT_URL= + +# If you want to serve media directly from your S3 bucket rather than through a proxy, +# set this to true +# PROXY_MEDIA=false + +# If you are using Amazon S3 to serve media directly, you will need to specify your region +# name in order to access files. Example: +# AWS_S3_REGION_NAME=eu-west-2 +# AWS_S3_REGION_NAME= diff --git a/docs/admin/external-storages.rst b/docs/admin/external-storages.rst index 413f8cfb2d82e105d8bcd37ad5a262eb8d15e565..c8dbbe9635f30846ebf97090cda35fa763356c9d 100644 --- a/docs/admin/external-storages.rst +++ b/docs/admin/external-storages.rst @@ -70,6 +70,11 @@ then issue a 302 redirect to the file URL in the bucket. This URL is actually be visible by the client, but contains a signature valid only for one hour, to ensure no one can reuse this URL or share it publicly to distribute unauthorized content. +.. note:: + + If you are using Amazon S3, you will need to set your ``AWS_S3_REGION_NAME`` in the ``.env`` file to + use this feature. + .. note:: Since some Subsonic clients don't support 302 redirections, Funkwhale will ignore