0

I am trying to connect my django project to AWS and it keeps erroring.

Traceback (most recent call last):
  File "manage.py", line 21, in <module>
    main()
  File "manage.py", line 17, in main
    execute_from_command_line(sys.argv)
  File "C:\Users\cuens\PycharmProjects\frozen-brushlands-41873\venv\lib\site-packages\django\core\management\__init__.py", line 401, in execute_from_command_line
    utility.execute()
  File "C:\Users\cuens\PycharmProjects\frozen-brushlands-41873\venv\lib\site-packages\django\core\management\__init__.py", line 395, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "C:\Users\cuens\PycharmProjects\frozen-brushlands-41873\venv\lib\site-packages\django\core\management\base.py", line 328, in run_from_argv
    self.execute(*args, **cmd_options)
  File "C:\Users\cuens\PycharmProjects\frozen-brushlands-41873\venv\lib\site-packages\django\core\management\base.py", line 369, in execute
    output = self.handle(*args, **options)
  File "C:\Users\cuens\PycharmProjects\frozen-brushlands-41873\venv\lib\site-packages\django\contrib\staticfiles\management\commands\collectstatic.py", line 187, in handle
    collected = self.collect()
  File "C:\Users\cuens\PycharmProjects\frozen-brushlands-41873\venv\lib\site-packages\django\contrib\staticfiles\management\commands\collectstatic.py", line 113, in collect
    handler(path, prefixed_path, storage)
  File "C:\Users\cuens\PycharmProjects\frozen-brushlands-41873\venv\lib\site-packages\django\contrib\staticfiles\management\commands\collectstatic.py", line 338, in copy_file
    if not self.delete_file(path, prefixed_path, source_storage):
  File "C:\Users\cuens\PycharmProjects\frozen-brushlands-41873\venv\lib\site-packages\django\contrib\staticfiles\management\commands\collectstatic.py", line 248, in delete_file
    if self.storage.exists(prefixed_path):
  File "C:\Users\cuens\PycharmProjects\frozen-brushlands-41873\venv\lib\site-packages\storages\backends\s3boto3.py", line 469, in exists
    self.connection.meta.client.head_object(Bucket=self.bucket_name, Key=name)
  File "C:\Users\cuens\PycharmProjects\frozen-brushlands-41873\venv\lib\site-packages\botocore\client.py", line 401, in _api_call
    return self._make_api_call(operation_name, kwargs)
  File "C:\Users\cuens\PycharmProjects\frozen-brushlands-41873\venv\lib\site-packages\botocore\client.py", line 731, in _make_api_call
    raise error_class(parsed_response, operation_name)
botocore.exceptions.ClientError: An error occurred (403) when calling the HeadObject operation: Forbidden

I have this as my AWS setting in the project

AWS_S3_ACCESS_KEY_ID = os.environ.get('AWS_S3_ACCESS_KEY_ID')
AWS_s3_SECRET_ACCESS_KEY = os.environ.get('AWS_S3_SECRET_ACCESS_KEY')
AWS_STORAGE_BUCKET_NAME = os.environ.get('AWS_STORAGE_BUCKET_NAME')

AWS_S3_HOST = 's3.us-east-2.amazonaws.com'
AWS_S3_REGION_NAME = 'us-east-2'
AWS_S3_CUSTOM_DOMAIN = '%s.%s' % (AWS_STORAGE_BUCKET_NAME, AWS_S3_HOST)
AWS_DEFAULT_ACL = None

AWS_LOCATION = 'static'

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "static"),
]

STATIC_URL = 'https://%s/%s/' % (AWS_S3_CUSTOM_DOMAIN, AWS_LOCATION)

PUBLIC_MEDIA_LOCATION = 'media'
MEDIA_URL = 'https://%s/%s/' % (AWS_S3_CUSTOM_DOMAIN, PUBLIC_MEDIA_LOCATION)
DEFAULT_FILE_STORAGE = 'blog.storage_backends.MediaStorage'

DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
STATICFILES_STORAGE = 'storages.backends.s3boto3.S3StaticStorage'

and this is my permission in the bucket

{
    "Version": "2008-10-17",
    "Statement": [
        {
            "Sid": "AllowPublicRead",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::wickedphoto-blog/*"
        }
    ]
}

I can not figure out what is wrong since I haven't worked on this project and it was working before cloning it from git

  • Does this answer your question? [AWS CLI S3 A client error (403) occurred when calling the HeadObject operation: Forbidden](https://stackoverflow.com/questions/36144757/aws-cli-s3-a-client-error-403-occurred-when-calling-the-headobject-operation) – Kulasangar Jan 04 '23 at 07:49

1 Answers1

0

I see you have 2 variables named DEFAULT_FILE_STORAGE. That could confuse django

Jonah
  • 1
  • If this actually is python code, this shouldn't have such behavior, as the second initialisation will simply supersede the previous value. – GregoirePelegrin Mar 15 '23 at 14:25