【问题标题】:Migrating from Amazon S3 to Azure Storage (Django web app)从 Amazon S3 迁移到 Azure 存储(Django Web 应用程序)
【发布时间】:2016-03-14 10:24:59
【问题描述】:

我维护这个 Django Web 应用程序,用户可以在其中聚集和互相聊天。如果他们愿意,他们也可以发布图片。我处理这些照片(即优化它们的大小)并将它们存储在 Amazon S3 存储桶中(就像 Azure 存储中的“容器”)。为此,我在 Amazon 上设置了存储桶,并在我的 settings.py 中包含以下配置代码:

DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
AWS_S3_FORCE_HTTP_URL = True
AWS_QUERYSTRING_AUTH = False
AWS_SECRET_ACCESS_KEY = os.environ.get('awssecretkey')
AWS_ACCESS_KEY_ID = os.environ.get('awsaccesskeyid')
AWS_S3_CALLING_FORMAT='boto.s3.connection.OrdinaryCallingFormat'
AWS_STORAGE_BUCKET_NAME = 'dakadak.in'

另外Boto 2.38.0 和django-storages 1.1.8 安装在我的虚拟环境中。 Boto 是一个 Python 包,它为 Amazon Web Services 提供接口,而 django-storages 是 Django 自定义存储后端的集合。

我现在想停止使用 Amazon S3,而是迁移到 Azure 存储。 IE。我需要将所有现有文件从 S3 迁移到 Azure 存储,接下来我需要配置我的 Django 应用程序以将所有新的静态资产保存在 Azure 存储上。

我找不到关于我想要实现的目标的准确文档。虽然我知道 django-storages support Azure。以前有没有人做过这种迁移,并且可以指出我需要从哪里开始,要遵循哪些步骤才能让一切正常运行?

注意:如果需要,请向我询问更多信息。

【问题讨论】:

    标签: python django azure amazon-s3 boto


    【解决方案1】:

    您共享的链接包含 Django 到 Azure Blob 的配置。现在,当我这样做时,我所要做的就是访问 Azure 门户。在存储帐户下,获取访问密钥,如下所示。然后创建一个容器并将容器名称提供给 Django 配置。这应该足够了。不过我前段时间就做过了。

    对于第二部分,将当前文件从 S3 存储桶迁移到 BLOB,您可以使用一些工具;

    如果您使用的是 Visual Studio,在 Visual Studio 中输入您的天蓝色帐户凭据后,您可以在服务器资源管理器下找到 blob。

    您也可以使用第三方工具,例如 Azure Storage Explorer 或 Cloudberry explorer。

    希望这会有所帮助!

    【讨论】:

    【解决方案2】:

    根据我的经验,您可以通过两个步骤从 Amazon S3 迁移到 Azure Storage for Django Web 应用程序。

    第一步是将所有文件从 S3 移动到 Azure Blob 存储。您可以尝试两种方法。

    1. 使用 S3 和 Azure 存储工具将文件从 S3 移动到本地目录到 Azure Blob 存储。

    以下这些 S3 工具可以帮助将文件移动到本地目录。

    对于将本地文件移动到 Azure Blob 存储,您可以使用 AzCopy 命令行实用程序在 Microsoft Azure Blob、文件和表存储中进行高性能上传、下载和复制数据,请参阅文档@ 987654324@.

    示例:AzCopy /Source:C:\myfolder /Dest:https://myaccount.blob.core.windows.net/mycontainer

    1. 通过使用您熟悉的语言(如 Python、Java 等)使用 Amazon S3 和 Azure Blob 存储 API 编程进行迁移。请参阅他们的 API 使用文档 https://azure.microsoft.com/en-us/documentation/articles/storage-python-how-to-use-blob-storage/ 和 http://docs.aws.amazon.com/AmazonS3/latest/API/APIRest.html。

    第二步是按照http://django-storages.readthedocs.org/en/latest/backends/azure.html文件重新配置Djangosettings.py文件。 Django-storages 将允许您上传的任何内容自动存储在您的存储容器中。

    DEFAULT_FILE_STORAGE='storages.backends.azure_storage.AzureStorage'
    AZURE_ACCOUNT_NAME='myaccount'
    AZURE_ACCOUNT_KEY='account_key'
    AZURE_CONTAINER='mycontainer'
    

    正如@neolursa 所说,您可以在 Azure 门户上找到这些设置。


    编辑: 在 Azure 旧门户上:

    在 Azure 新门户上:

    【讨论】:

    • @HassanBaig 在 Azure 旧门户上,您可以通过单击 Storage -> <Your Storage> 底部的 MANAGE ACCESS KEYS 找到它。在 Azure 新门户上,您可以通过 <Your Storage> Storage account (classic) -> All settings -> Keys 找到它。如果您仍然找不到它,请随时告诉我。我会把截图给你看。
    • @HassanBaig 我认为你说的Azure Container 是Blob Storage 的容器。是的,您可以将 blob 容器创建为必须遵循容器命名规则的任何名称。请参考azure.microsoft.com/en-us/documentation/articles/…关注IMPORTANT通知。
    • @HassanBaig 据我所知,没有属性可以做到这一点,因为端点基于 https 协议。如果你使用http url,它将被强制重写为https url。因此,如果您有任何疑问,请随时告诉我。
    • 我在 internet.org 的平台上有一个应用程序。迄今为止,Facebook 已经禁止其开发人员使用 https 协议,但我会再次询问他们的技术支持团队。我希望能够为此使用 Azure 存储而不是 S3。让我们看看。
    • 有关于 Azure 云配置的后续问题。我认为它开始了一个单独的 SO 帖子:stackoverflow.com/questions/34266346/…
    猜你喜欢
    • 2011-08-25
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 2014-05-08
    • 2011-08-14
    • 1970-01-01
    • 2020-02-06
    • 1970-01-01
    相关资源
    最近更新 更多