【发布时间】:2021-05-09 04:43:06
【问题描述】:
我已经在 AWS Elastic Beanstalk 上部署了 Python Django 服务器。 这就是我的settings.py 文件的样子:
# aws settings
AWS_ACCESS_KEY_ID = os.getenv('AWS_ACCESS_KEY_ID')
AWS_SECRET_ACCESS_KEY = os.getenv('AWS_SECRET_ACCESS_KEY')
AWS_STORAGE_BUCKET_NAME = os.getenv('AWS_STORAGE_BUCKET_NAME')
AWS_DEFAULT_ACL = None
AWS_S3_CUSTOM_DOMAIN = f'{AWS_STORAGE_BUCKET_NAME}.s3.amazonaws.com'
AWS_S3_OBJECT_PARAMETERS = {'CacheControl': 'max-age=86400'}
# s3 static settings
STATIC_URL = '/staticfiles/'
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
# s3 public media settings
PUBLIC_MEDIA_LOCATION = 'media'
MEDIA_URL = f'https://{AWS_S3_CUSTOM_DOMAIN}/{PUBLIC_MEDIA_LOCATION}/'
DEFAULT_FILE_STORAGE = 'hello_django.storage_backends.PublicMediaStorage'
# s3 private media settings
PRIVATE_MEDIA_LOCATION = 'private'
PRIVATE_FILE_STORAGE = 'hello_django.storage_backends.PrivateMediaStorage'
在 AWS 中,我创建了具有 AmazonS3FullAccess 权限的 IAM 用户,并在设置中使用了他的 AWS_ACCESS_KEY_ID 和 AWS_SECRET_ACCESS_KEY。
问题是,当我尝试从文件链接读取媒体文件时,我总是收到“Access denied”错误,即使我指定 PublicMediaStorage 并授予 S3 存储桶上的所有公共访问权限。 p>
另外,当我上传文件时,存储桶中的文件夹(例如“媒体”)不会被创建。
你知道可能是什么问题吗?
【问题讨论】:
标签: python django amazon-web-services amazon-s3 amazon-elastic-beanstalk