在 windows 上使用 python 自动化 azure azcopy

Automate azure azcopy using python on windows

我正在尝试使用 python 中的 azcopy 我已经在 CLI 中使用了它 正在运行!

我已经成功执行了以下命令:

上传:

set AZCOPY_SPA_CLIENT_SECRET=<my client secret>
azcopy login --service-principal --application-id=<removed> --tenant-id=<removed>
azcopy copy "D:\azure\content" "https://dummyvalue.blob.core.windows.net/container1/result4" --overwrite=prompt --follow-symlinks --recursive --from-to=LocalBlob --blob-type=Detect

同样可以下载

azcopy copy "https://dummyvalue.blob.core.windows.net/container1/result4" "D:\azure\azcopy_windows_amd64_10.4.3\temp\result2" --recursive

现在,我想使用 python 自动执行这些命令,我​​知道 azcopy 也可以通过 SAS 密钥使用,但这超出了我的工作范围

第一次尝试:

from subprocess import call
call(["azcopy", "login", "--service-principal", "--application-id=<removed>", "--tenant-id=<removed>"])

第二次尝试:

import os
os.system("azcopy login --service-principal --application-id=<removed> --tenant-id=<removed>")

我的环境中已经 set AZCOPY_SPA_CLIENT_SECRET

我在 windows 上使用 python 3。

每次我收到这个错误:

Failed to perform login command: service principal auth requires an application ID, and client secret/certificate

NOTE: If your credential was created in the last 5 minutes, please wait a few minutes and try again.

我不想使用 Azure VM 来完成这项工作

谁能帮我解决这个问题?

这是因为setcmd没有设置永久环境变量,只在当前windowscmd提示符下生效

您应该通过UI手动设置环境变量或尝试使用setx命令。

我用你的代码做了测试,按照UI手动设置AZCOPY_SPA_CLIENT_SECRET的环境变量,然后代码可以运行 没有问题(可能需要几分钟才能生效)。

测试结果如下: