我维护这个 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 是一个提供 Amazon Web Services 接口(interface)的 Python 包,而 django-storages 是 Django 自定义存储后端的集合。
我现在想停止使用 Amazon S3,而是迁移到 Azure 存储。 IE。我需要将所有现有文件从 S3 迁移到 Azure 存储,接下来我需要配置 Django 应用程序以将所有新的静态 Assets 保存在 Azure 存储上。
我找不到关于我想要实现的目标的精确文档。虽然我知道 django-storages support Azure 。有人以前做过这种迁移吗?可以指出我需要从哪里开始,要遵循哪些步骤才能让一切正常运行?
注意:如果您需要更多信息,请向我询问。
最佳答案
根据我的经验,您可以执行两个步骤将 Django Web 应用程序从 Amazon S3 迁移到 Azure 存储。
第一步是将所有文件从 S3 移动到 Azure Blob 存储。有两种方法您可以尝试。
- 使用 S3 和 Azure 存储工具将文件从 S3 移动到本地目录到 Azure Blob 存储。
以下适用于 S3 的工具可以帮助将文件移动到本地目录。
- AWS 命令行( https://aws.amazon.com/cli/ ):
aws s3 cp s3://BUCKET/FOLDER localfolder --recursive
- S3cmd 工具(http://s3tools.org/):
s3cmd -r 同步 s3://BUCKET/FOLDER 本地文件夹
- S3浏览器(http://s3browser.com/): 这是一个 GUI 客户端。
要将本地文件移动到 Azure Blob 存储,您可以使用 AzCopy 命令行实用程序在 Microsoft Azure Blob、文件和表存储之间进行高性能上传、下载和复制数据,请参阅文档 https://azure.microsoft.com/en-us/documentation/articles/storage-use-azcopy/ .
示例:AzCopy/Source:C:\myfolder/Dest:https://myaccount.blob.core.windows.net/mycontainer
- 通过使用您熟悉的语言(例如 Python、Java 等)使用 Amazon S3 和 Azure Blob Storage 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重新配置Django settings.py
文件。 Django 存储将允许您执行的任何上传自动存储在存储容器中。
DEFAULT_FILE_STORAGE='storages.backends.azure_storage.AzureStorage'
AZURE_ACCOUNT_NAME='myaccount'
AZURE_ACCOUNT_KEY='account_key'
AZURE_CONTAINER='mycontainer'
您可以按照 @neolursa 的说法在 Azure 门户上找到这些设置。
<小时/>关于python - 从 Amazon S3 迁移到 Azure 存储(Django Web 应用程序),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34173861/