【问题标题】:How to connect s3 amazon to your django project?如何将 s3 amazon 连接到您的 django 项目?
【发布时间】:2021-08-06 15:35:40
【问题描述】:

我已经在 s3 存储桶中上传了图片和静态文件,但现在错误是当我们转到路径时,图片没有出现:

当我们检查它时,它会显示应该放置图像的正确路径:

当我们从 s3 访问它时,我们可以在这里看到每张图片

我们需要更改网址吗?如果是的话怎么做?

And the access is also public

【问题讨论】:

  • 您的 s3 对象是否公开,您将它们链接到您的网站上?
  • 是的,他们是公开的

标签: python django amazon-web-services amazon-s3 amazon-ec2


【解决方案1】:

依赖关系

您需要安装两个 Python 库:

  1. boto3
  2. django-storages

boto3 库是一个公共 API 客户端,用于访问 Amazon Web Services (AWS) 资源,例如 Amazon S3。这是由 Amazon 维护的官方发行版。

Amazon S3 设置

django-storages 是一个开源库,用于管理 Dropbox、OneDrive 和 Amazon S3 等存储后端。这非常方便,因为它插入了内置的 Django 存储后端 API。换句话说,它会让你的生活更轻松,因为它不会彻底改变你与静态/媒体资产的交互方式。我们只需要添加一些配置参数,它就会为我们完成所有艰苦的工作。

在进入 Django 部分之前,让我们设置 S3 部分。我们需要创建一个有权管理我们的 S3 资源的用户。

登录 AWS 网页,在服务列表中找到 IAM,它在 Security、Identity & Compliance 下列出:

转到“用户”选项卡并单击“添加用户”按钮:

提供用户名并选择编程访问选项:

点击下一步进入权限。此时,我们需要创建一个具有正确 S3 权限的新组,并将我们的新用户添加到其中。按照向导并单击创建组按钮:

为组定义一个名称并搜索内置策略 AmazonS3FullAccess:

单击创建组以完成组创建过程,在下一个屏幕中,最近创建的组将显示为选中状态,保持这种状态,最后单击按钮下一步:审核:

查看信息,如果一切正确,则继续创建新用户。接下来,您应该会看到以下信息:

记下所有信息:用户、访问密钥 ID 和秘密访问密钥。保存它们以备后用。

单击关闭按钮,让我们继续。现在,是时候创建我们的第一个存储桶了。

Bucket 就是我们在 S3 中所说的存储容器。我们可以在同一个 Django 项目中使用多个存储桶。但是,在大多数情况下,每个网站只需要一个存储桶。

单击“服务”菜单并搜索 S3。它位于存储下。如果您看到下面的屏幕,那么您来对地方了。

单击 + 创建存储桶以启动流程。为您的存储桶设置符合 DNS 的名称。它将用于识别您的资产。就我而言,我选择 sibtc-static。所以我的资产路径将是这样的:https://sibtc-static.s3.amazonaws.com/static/

保留其余设置,仅使用默认设置继续下一步,最后点击创建存储桶按钮。接下来你应该看到下面的屏幕:

阅读更多here以了解安装..

【讨论】:

    【解决方案2】:

    首先看到您的图像路径不包含媒体,但 S3 图像路径具有该字符串以完全呈现​​图像,因此在项目 settings.py 文件中包含 MEDIA_URL。

    MEDIA_URL = "/media/"
    

    包含在 urlpatterns/paths 之后,不要忘记导入

    from django.conf.urls.static import static
    
    urlpatterns =  [ ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-08
      • 2017-09-29
      • 2021-02-10
      • 2023-03-11
      • 2014-04-28
      • 1970-01-01
      • 2011-04-15
      • 1970-01-01
      相关资源
      最近更新 更多