簡體   English   中英

在 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 鍵使用,但對於我的工作來說,這超出了 scope

第一次嘗試:

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 來完成這項工作

誰能幫我解決這個問題?

這是因為set cmd 並沒有設置永久環境變量,它只在當前 windows cmd 提示下生效。

您應該通過 UI 手動設置環境變量或嘗試使用setx命令。

我用你的代碼做了一個測試,並根據用戶界面手動設置了AZCOPY_SPA_CLIENT_SECRET的環境變量,然后代碼可以正常運行(可能需要幾分鍾才能生效)。

測試結果如下:

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM