【发布时间】:2021-05-02 21:24:41
【问题描述】:
在这个问题上停留了一段时间。在我的 django 网站的管理页面中,我可以将照片与我的博客文章一起上传。照片将出现在我的 S3 存储桶中,但不会在博客文章中呈现。只是一个小照片图标。
遵循 simpleisbetterthancomplex 教程,并阅读了我能找到的所有相关的 stackoverflow 问题。谁能看到我错过了什么?
谢谢。
这是我的 settings.py:
AWS_ACCESS_KEY_ID = '**********'
AWS_SECRET_ACCESS_KEY = '*********'
AWS_STORAGE_BUCKET_NAME = 'matt-george-portfolio'
AWS_S3_CUSTOM_DOMAIN = '%s.s3.amazonaws.com' % AWS_STORAGE_BUCKET_NAME
AWS_LOCATION = 'static'
STATIC_URL = "https://%s/%s/" % (AWS_S3_CUSTOM_DOMAIN, AWS_LOCATION)
AWS_S3_FILE_OVERWRITE = False
AWS_DEFAULT_ACL = None
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
STATIC_URL = '/static/'
MEDIA_URL = '/images/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'static/images')
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'),
)
import django_heroku
django_heroku.settings(locals())
这是我的存储桶政策:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::964481289861:user/my-user"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my-bucket/*"
},
{
"Sid": "AllObjectActions",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::964481289861:user/my-user"
},
"Action": "s3:*Object",
"Resource": "arn:aws:s3:::my-bucket/*"
}
]
}
这是我的用户政策:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "s3:ListAllMyBuckets",
"Resource": [
"arn:aws:s3:::*"
]
},
{
"Effect":"Allow",
"Action":["s3:ListBucket","s3:GetBucketLocation"],
"Resource":"arn:aws:s3:::my-bucket"
},
{
"Effect":"Allow",
"Action":[
"s3:PutObject",
"s3:PutObjectAcl",
"s3:GetObject",
"s3:GetObjectAcl",
"s3:DeleteObject"
],
"Resource":"arn:aws:s3:::my-bucket"
}
]
}
【问题讨论】:
-
您的最后一个屏幕截图似乎是 CORS 策略。您可以检查(或在此处添加)s3 存储桶策略和 Iam 用户或 Iam 角色的策略吗?
-
@BaluVyamajala 我添加了 IAM 政策。
标签: python django amazon-web-services amazon-s3 heroku