使用 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返回链接服务页面,刷新并测试连接,正常。
这是我的问题,我正在尝试使用 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返回链接服务页面,刷新并测试连接,正常。