我正在尝试使用 Python 在 Azure 存储容器中下载数据。使用帐户密钥不是一种选择,因此我正在尝试使用 Azure AD,但到目前为止还无法使其正常工作。我主要使用此处的文档作为参考:https ://docs.microsoft.com/en-us/azure/storage/blobs/data-lake-storage-directory-file-acl-python 。
使用 Azure AD 进行连接的代码:
def initialize_storage_account_ad(storage_account_name, client_id, client_secret, tenant_id):
try:
global service_client
credential = ClientSecretCredential(tenant_id, client_id, client_secret)
service_client = DataLakeServiceClient(account_url="{}://{}.dfs.core.windows.net".format(
"https", storage_account_name), credential=credential)
except Exception as e:
print(e)
下载数据的代码:
def download_file_from_directory():
try:
file_system_client = service_client.get_file_system_client(file_system="my-file-system")
directory_client = file_system_client.get_directory_client("my-directory")
local_file = open("C:\\file-to-download.txt",'wb')
file_client = directory_client.get_file_client("uploaded-file.txt")
download = file_client.download_file()
downloaded_bytes = download.readall()
local_file.write(downloaded_bytes)
local_file.close()
except Exception as e:
print(e)
现在我知道我已经正确设置了下载,因为我可以在使用帐户密钥时获取数据。但不知何故,使用 Azure AD 连接没有成功。我从注册应用程序开始,查找租户 ID/客户端 ID/客户端密码。我还向注册的应用授予了 Azure 存储的权限并启用了隐式授权流(ID 令牌)。我还缺少什么吗?任何帮助表示赞赏。