如何将文件上传到 Azure Blob 存储?

How to upload files to azure blob storage?

我需要每天从本地系统上传文件到 azure blob 容器。我将 azcopy 与 sas 一起使用。 但我遇到的是,用于容器的 SAS 在每次刷新时都会不断变化。 那么有没有更好的方法可以使用 python 或 azcopy 上传文件。 或者有什么方法可以在不登录的情况下从 azure 获取 SAS 令牌并将该 SAS 令牌传递给 azcopy 命令? 截至目前,我使用 azcopy

中的此命令
.\azcopy "Sourcefilepath" "Destblobpath?SAS_Token" --recurcive=true

每天我都应该登录到 azure 获取 SAS 令牌并通过上述命令。 我尝试了 .\azcopy login 并成功登录,但我无法使用

发送文件
.\azcopy "Sourcepath" "Destpath"

不知道我哪里做错了。

如果您使用 python,我建议您使用 azure python sdk 进行上传。你可以从这里的例子中看到更多...

https://github.com/Azure-Samples/storage-blobs-python-quickstart/blob/master/example.py

它可以像这样(来自快速入门文档:https://docs.microsoft.com/en-us/python/api/overview/azure/storage?view=azure-python)一样快地与您的 azure blob 存储帐户交互。只需放入一些逻辑以递归地循环遍历目录并上传每个文件。

首先确保 pip 安装所需的包,然后从门户获取您的帐户名(blob 存储名称)和访问密钥...将它们插入即可。

pip install azure-storage-blob azure-mgmt-storage

然后在这里写一些python代码...

from azure.storage.blob import BlockBlobService, PublicAccess

blob_service = BlockBlobService('[your account name]','[your access key]')

blob_service.create_container(
    'mycontainername',
    public_access=PublicAccess.Blob
)

blob_service.create_blob_from_bytes(
    'mycontainername',
    'myblobname',
    b'hello from my python file'
)

print(blob_service.make_blob_url('mycontainername', 'myblobname'))

这应该会让您很快朝着正确的方向前进。

您看到的 SAS 问题实际上正在按预期工作。 SAS 有到期日,您可以随时撤销。因此,您将需要在新版本可用时立即使用它。

我建议使用 python SDK,因为它使用不会过期的存储密钥和帐户名称,除非轮换密钥。我在 python SDK 中写了一些 tools/Samples 执行所有操作:列表、上传和删除:https://github.com/adamsmith0016/Azure-storage

随意克隆和重新使用任何代码。