【问题标题】:Automate azure azcopy using python on windows在 Windows 上使用 python 自动化 azure azcopy
【发布时间】:2020-09-20 21:45:53
【问题描述】:

我正在尝试从 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。

每次我得到这个错误:

无法执行登录命令:服务主体身份验证需要 应用程序 ID 和客户端密钥/证书

注意:如果您的凭据是在过去 5 分钟内创建的,请 请等待几分钟,然后重试。

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

谁能帮我解决这个问题?

【问题讨论】:

标签: python python-3.x azure azcopy


【解决方案1】:

这是因为set cmd没有设置永久环境变量,它只在当前windows cmd提示符下生效。

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

我用你的代码做了一个测试,根据UI手动设置AZCOPY_SPA_CLIENT_SECRET的环境变量,然后代码可以正常运行(可能需要几分钟才能生效)。

测试结果如下:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-04
    • 2015-05-21
    • 2011-01-22
    • 1970-01-01
    • 2018-08-30
    • 2016-02-12
    • 1970-01-01
    相关资源
    最近更新 更多