使用 python 创建与密钥保管库的链接服务

Create linked service with key Vault using python

这是我的问题,我正在尝试使用 python sdk 创建链接服务,如果我提供了存储帐户名称和密钥,我就成功了。但我想使用密钥保管库参考创建链接服务,下面运行正常并创建链接服务。但是,当我去数据工厂并测试连接时..它失败了..请帮忙!

store = LinkedServiceReference(reference_name ='LS_keyVault_Dev')
storage_string = AzureKeyVaultSecretReference( store=store, secret_name = 'access_key')

ls_azure_storage = AzureStorageLinkedService(connection_string=storage_string)
ls = adf_client.linked_services.create_or_update(rg_name, df_name, ls_name, ls_azure_storage)

错误信息

Invalid storage connection string provided to 'AzureTableConnection'. Check the storage connection string in configuration. No valid combination of account information found.

我测试了你的代码,它成功创建了链接服务,我导航到 Test connection 的门户,它也有效,你可以按照以下步骤操作。

1.Navigate 到门户中的 azure keyvault -> Secrets -> Create a secret,我不确定为什么可以使用 access_key 作为名称这个秘密,我测试了一下,是无效的。所以在我的示例中,我使用 accesskey 作为秘密的名称,然后存储存储帐户的 Connection string

2.Navigate 到 keyvault 的 Access policies,添加具有正确秘密权限的数据工厂的 MSI。如果您没有启用数据工厂的 MSI,请按照此 link 生成它,这用于 Azure Key Vault 链接服务访问您的 keyvault 秘密。

3.Navigate到你的数据工厂的Azure Key Vault链接服务,确保连接成功。

4.Use 下面的代码创建存储链接服务。

库版本:

azure-common==1.1.23
azure-mgmt-datafactory==0.9.0

from azure.common.credentials import ServicePrincipalCredentials
from azure.mgmt.datafactory import DataFactoryManagementClient
from azure.mgmt.datafactory.models import *

subscription_id = '<subscription-id>'
credentials = ServicePrincipalCredentials(client_id='<client-id>', secret='<client-secret>', tenant='<tenant-id>')
adf_client = DataFactoryManagementClient(credentials, subscription_id)

rg_name = '<resource-group-name>'
df_name = 'joyfactory'
ls_name = 'storageLinkedService'

store = LinkedServiceReference(reference_name ='AzureKeyVault1') # AzureKeyVault1 is the name of the Azure Key Vault linked service
storage_string = AzureKeyVaultSecretReference( store=store, secret_name = 'accesskey')

ls_azure_storage = AzureStorageLinkedService(connection_string=storage_string)
ls = adf_client.linked_services.create_or_update(rg_name, df_name, ls_name, ls_azure_storage)
print(ls)

5.Go返回链接服务页面,刷新并测试连接,正常。