从django models存储图片到S3时,一直得到400错误响应?

问题描述 投票:0回答:1

以下是我的设置 django-boto

# S3 configuration
AWS_ACCESS_KEY_ID = os.environ.get("AWSAccessKeyId")
AWS_SECRET_ACCESS_KEY = os.environ.get("AWSSecretKey")
AWS_STORAGE_BUCKET_NAME = os.environ.get("S3BucketName")
S3DIRECT_REGION = os.environ.get("S3Region")

# S3 configuration for boto
BOTO_S3_BUCKET = os.environ.get("S3BucketName")
BOTO_BUCKET_LOCATION = os.environ.get("S3Region")
# AWS_S3_FORCE_HTTP_URL = True
# AWS_QUERYSTRING_AUTH = False
AWS_S3_HOST = 's3.ap-south-1.amazonaws.com'

而我对模型的定义如下

from django_boto.s3.storage import S3Storage

s3 = S3Storage()

class userProfileModel(models.Model):

    """User profile model. """
    user        = models.OneToOneField(User, on_delete=models.CASCADE,related_name='profile')
    profile_pic = models.ImageField(storage=s3,null=True,blank=True)

我一直收到来自s3的400响应代码,没有任何错误。我唯一能找到的例外是在

envlibpython2.7site-packagesbotos3connection.py在head_bucket,第556行。

同样,我也在使用 django-s3direct 用同样的凭证,它的工作一切正常,没有任何问题。我到底是哪里出了问题?

django amazon-web-services amazon-s3 boto
1个回答
0
投票

是否您在设置中指定的用户的访问密钥实际上没有上传到S3 bucket的权限?要检查这个问题,请检查S3 bucket策略。

环境变量是否真的被正确设置了?要检查这一点,请检查S3 bucket策略。print 从您的设置文件中取出它们。

© www.soinside.com 2019 - 2024. All rights reserved.