【问题标题】:Image url from S3 is not working in Django template来自 S3 的图像 url 在 Django 模板中不起作用
【发布时间】:2021-11-08 16:05:22
【问题描述】:

我的 django 后端和网站托管在 heroku 中。我的媒体文件托管在 Amazon S3 中。我没有将图像上传到 S3 的问题。但是当我尝试将 S3 中的图像 url 嵌入到 img 标签中时,我遇到了问题。它不显示图像。

<img src="{{ taxi.user_photo.url }}" alt="Photo of user">

这里是返回的网址:https://elasticbeanstalk-us-west-2-865036748267.s3.amazonaws.com/media/user_photo/default_taksist.png?AWSAccessKeyId=AKIA4S2BVIXV43WWVZG4&Signature=En2f5F65B61oaYexN2HIIcWIgME%3D&Expires=1631531071

这个链接里面有KeyId和Signature,不知道为什么会这样。

还有,这是我的 S3 存储桶策略:

{
"Version": "2012-10-17",
"Statement": [
    {
        "Sid": "PublicReadGetObject",
        "Effect": "Allow",
        "Principal": "*",
        "Action": "s3:GetObject",
        "Resource": "arn:aws:s3:::elasticbeanstalk-us-west-2-865036748267/*"
    }
]

}

我在 stackoverflow 中查看了其他答案,它们并没有太大帮助。

基点是我有一个网址,但它无法正常工作。

感谢您的任何帮助,感谢您的宝贵时间。

【问题讨论】:

    标签: django amazon-s3


    【解决方案1】:
    1. 在您的存储桶设置中取消选中阻止所有公共访问
    2. 生成权限

    {
      "Id": "Policy1631681912120",
      "Version": "2012-10-17",
      "Statement": [
    {
      "Sid": "Stmt1631681911100",
      "Action": [
        "s3:GetObject"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::your_bucket_name/*",
      "Principal": "*"
    }
    ]
    }
    
    1. settings.py

    AWS_S3_ACCESS_KEY_ID = 'secret_key'
    AWS_SECRET_ACCESS_KEY  = 'secret_access_key'
    AWS_S3_SIGNATURE_VERSION = "s3v4"
    AWS_S3_REGION_NAME = "your_bucket_region"
    AWS_STORAGE_BUCKET_NAME = 'your_bucket_name'
    
    AWS_QUERYSTRING_AUTH = False # it will remove the authentication info from the url
    
    DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
    

    django-storage documentation

    【讨论】:

      猜你喜欢
      • 2011-11-17
      • 1970-01-01
      • 2021-09-07
      • 2021-02-05
      • 2011-04-28
      • 1970-01-01
      • 2023-03-15
      • 2015-06-15
      • 1970-01-01
      相关资源
      最近更新 更多