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

时间:2019-03-22 13:00:23

标签: python azure azure-storage-blobs azcopy

我每天需要从本地系统上载文件到azure blob容器。我将azcopy与sas一起使用。 但是我遇到的是容器的SAS在每次刷新时都会不断变化。 因此,有没有更好的方法可以使用python或azcopy上传文件。 还是有任何方法无需登录即可从天蓝色获取SAS令牌并将该SAS令牌传递给azcopy命令? 截至目前,我从azcopy使用此命令

.\azcopy "Sourcefilepath" "Destblobpath?SAS_Token" --recurcive=true

每天我都应该登录到azure获取SAS令牌并传递上述命令。 我尝试使用。\ azcopy登录,但登录成功,但是无法发送文件

.\azcopy "Sourcepath" "Destpath"

不知道我在哪里做错了。

2 个答案:

答案 0 :(得分:0)

如果您使用的是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'))

这应该使您很快地朝正确的方向前进。

答案 1 :(得分:0)

您看到的SAS问题实际上正在按预期的方式工作。 SAS有有效期,您可以随时取消它。因此,您将需要尽快使用新的。

我建议使用python SDK,因为它使用存储密钥和帐户名称,除非旋转密钥,否则它不会过期。我在python SDK中编写了一些工具/示例来执行所有操作:列表,上传和删除: https://github.com/adamsmith0016/Azure-storage

可以随时克隆和重复使用任何代码。

相关问题