I was following a tutorial by digital ocean on linking spaces with my django project,
I am currently getting this error:
File "G:\Projects\Python\Django\laterevision\src\manage.py", line 22, in <module>
main()
File "G:\Projects\Python\Django\laterevision\src\manage.py", line 18, in main
execute_from_command_line(sys.argv)
File "G:\Projects\Python\Django\laterevision\venv\lib\site-packages\django\core\management\__init__.py", line 446, in execute_from_command_line
utility.execute()
File "G:\Projects\Python\Django\laterevision\venv\lib\site-packages\django\core\management\__init__.py", line 440, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "G:\Projects\Python\Django\laterevision\venv\lib\site-packages\django\core\management\base.py", line 402, in run_from_argv
self.execute(*args, **cmd_options)
File "G:\Projects\Python\Django\laterevision\venv\lib\site-packages\django\core\management\base.py", line 448, in execute
output = self.handle(*args, **options)
File "G:\Projects\Python\Django\laterevision\venv\lib\site-packages\django\contrib\staticfiles\management\commands\collectstatic.py", line 209, in handle
collected = self.collect()
File "G:\Projects\Python\Django\laterevision\venv\lib\site-packages\django\contrib\staticfiles\management\commands\collectstatic.py", line 135, in collect
handler(path, prefixed_path, storage)
File "G:\Projects\Python\Django\laterevision\venv\lib\site-packages\django\contrib\staticfiles\management\commands\collectstatic.py", line 378, in copy_file
self.storage.save(prefixed_path, source_file)
File "G:\Projects\Python\Django\laterevision\venv\lib\site-packages\django\core\files\storage.py", line 56, in save
name = self._save(name, content)
File "G:\Projects\Python\Django\laterevision\venv\lib\site-packages\storages\backends\s3boto3.py", line 457, in _save
obj.upload_fileobj(content, ExtraArgs=params, Config=self._transfer_config)
File "G:\Projects\Python\Django\laterevision\venv\lib\site-packages\boto3\s3\inject.py", line 725, in object_upload_fileobj
return self.meta.client.upload_fileobj(
File "G:\Projects\Python\Django\laterevision\venv\lib\site-packages\boto3\s3\inject.py", line 636, in upload_fileobj
return future.result()
File "G:\Projects\Python\Django\laterevision\venv\lib\site-packages\s3transfer\futures.py", line 103, in result
return self._coordinator.result()
File "G:\Projects\Python\Django\laterevision\venv\lib\site-packages\s3transfer\futures.py", line 266, in result
raise self._exception
File "G:\Projects\Python\Django\laterevision\venv\lib\site-packages\s3transfer\tasks.py", line 139, in __call__
return self._execute_main(kwargs)
File "G:\Projects\Python\Django\laterevision\venv\lib\site-packages\s3transfer\tasks.py", line 162, in _execute_main
return_value = self._main(**kwargs)
File "G:\Projects\Python\Django\laterevision\venv\lib\site-packages\s3transfer\upload.py", line 758, in _main
client.put_object(Bucket=bucket, Key=key, Body=body, **extra_args)
File "G:\Projects\Python\Django\laterevision\venv\lib\site-packages\botocore\client.py", line 514, in _api_call
return self._make_api_call(operation_name, kwargs)
File "G:\Projects\Python\Django\laterevision\venv\lib\site-packages\botocore\client.py", line 938, in _make_api_call
raise error_class(parsed_response, operation_name)
botocore.exceptions.ClientError: An error occurred (InvalidArgument) when calling the PutObject operation: Unknown
My settings for spaces look like this:
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/4.1/howto/static-files/
AWS_ACCESS_KEY_ID = 'XXX'
AWS_SECRET_ACCESS_KEY = 'XXXXXXX'
AWS_STORAGE_BUCKET_NAME = 'lrev'
AWS_S3_ENDPOINT_URL = 'https://fra1.digitaloceanspaces.com'
# I enabled the CDN, so you get a custom domain. Use the end point in the AWS_S3_CUSTOM_DOMAIN setting.
AWS_S3_CUSTOM_DOMAIN = 'lrev.fra1.digitaloceanspaces.com'
AWS_S3_OBJECT_PARAMETERS = {
'CacheControl': 'max-age=86400',
}
AWS_DEFAULT_ACL = 'x-amz-acl'
STATICFILES_STORAGE = 'custom_storages.StaticStorage'
DEFAULT_FILE_STORAGE = 'custom_storages.MediaStorage'
# Use AWS_S3_ENDPOINT_URL here if you haven't enabled the CDN and got a custom domain.
STATIC_URL = '{}/{}/'.format(AWS_S3_CUSTOM_DOMAIN, 'static')
STATIC_ROOT = 'static/'
MEDIA_URL = '{}/{}/'.format(AWS_S3_CUSTOM_DOMAIN, 'media')
MEDIA_ROOT = 'media/'
and custom_storages looks like this:
from storages.backends.s3boto3 import S3Boto3Storage
class StaticStorage(S3Boto3Storage):
bucket_name = 'lrev'
location = 'static'
class MediaStorage(S3Boto3Storage):
bucket_name = 'lrev'
location = 'media'
Any help would be appriciated!
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!
These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.
Hi there,
I believe that the problem might be the following:
I think that
lrev.fra1.digitaloceanspaces.com
is not a valid endpoint.I would recommend using the following:
Let me know how it goes!
Best,
Bobby