使用Azure.ResourceManager.DataFactory SDK获取SHIR认证密钥的方法咨询
在Azure.ResourceManager.DataFactory SDK中获取SHIR认证密钥的C#实现
问题描述
使用Azure.ResourceManager.DataFactory SDK创建*Self Hosted Integration Runtime(SHIR)*后,无法找到对应的C#方法获取其认证密钥。已实现SHIR创建的代码如下:
ArmClient armClient = new ArmClient( new ClientSecretCredential(tenantId, clientId, clientSecret, new TokenCredentialOptions { AuthorityHost = AzureAuthorityHosts.AzurePublicCloud }), subscriptionId, new ArmClientOptions { Environment = ArmEnvironment.AzurePublicCloud }); ResourceIdentifier resourceIdentifier = SubscriptionResource.CreateResourceIdentifier(subscriptionId); SubscriptionResource subscriptionResource = armClient.GetSubscriptionResource(resourceIdentifier); var resourceGroupOperation = subscriptionResource.GetResourceGroups().Get(resourceGroupName); ResourceGroupResource resourceGroupResource = resourceGroupOperation.Value; DataFactoryData dataFactoryData = new DataFactoryData(AzureLocation.EastUS); var dataFactoryOperation = resourceGroupResource.GetDataFactories().CreateOrUpdate(WaitUntil.Completed, dataFactoryName, dataFactoryData); DataFactoryResource dataFactoryResource = dataFactoryOperation.Value; var dataFactoryIntegrationRuntimeData = new DataFactoryIntegrationRuntimeData( new SelfHostedIntegrationRuntime { Description = "A self-hosted integration runtime from C# Azure SDK", }); var createOrUpdateOperation = dataFactoryResource.GetDataFactoryIntegrationRuntimes().CreateOrUpdate( WaitUntil.Completed, integrationRuntimeName, dataFactoryIntegrationRuntimeData); Console.WriteLine(createOrUpdateOperation.WaitForCompletionResponse().Content);
尝试过var keys = dataFactoryResource.GetDataFactoryIntegrationRuntime(integrationRuntimeName);但无法获取密钥,已知Python SDK中对应方法为list_auth_keys:
auth_keys = adf_client.integration_runtimes.list_auth_keys( resource_group_name=rg_name, factory_name=df_name, integration_runtime_name=ir_name, )
解决方案
在C# SDK中,获取SHIR认证密钥需调用ListAuthKeysAsync(异步)或ListAuthKeys(同步)方法,该方法属于DataFactoryIntegrationRuntimeResource对象。
步骤1:获取SHIR资源实例
可以从创建操作的结果直接获取,或通过名称查询已存在的SHIR:
// 方式1:从创建操作结果中获取(推荐,无需额外查询) DataFactoryIntegrationRuntimeResource irResource = createOrUpdateOperation.Value; // 方式2:查询已存在的SHIR var irOperation = await dataFactoryResource.GetDataFactoryIntegrationRuntime(integrationRuntimeName).GetAsync(); DataFactoryIntegrationRuntimeResource irResource = irOperation.Value;
步骤2:调用密钥获取方法
// 异步方式 var authKeysResult = await irResource.ListAuthKeysAsync(WaitUntil.Completed); IntegrationRuntimeAuthKeys authKeys = authKeysResult.Value; // 同步方式 var authKeysResult = irResource.ListAuthKeys(WaitUntil.Completed); IntegrationRuntimeAuthKeys authKeys = authKeysResult.Value;
步骤3:访问密钥属性
获取到的IntegrationRuntimeAuthKeys对象包含两个密钥属性:
Console.WriteLine($"认证密钥1:{authKeys.AuthKey1}"); Console.WriteLine($"认证密钥2:{authKeys.AuthKey2}");
完整代码示例
将以下代码添加到原SHIR创建代码之后:
// 获取SHIR资源实例 DataFactoryIntegrationRuntimeResource irResource = createOrUpdateOperation.Value; // 获取认证密钥 var authKeysResult = await irResource.ListAuthKeysAsync(WaitUntil.Completed); IntegrationRuntimeAuthKeys authKeys = authKeysResult.Value; // 输出密钥 Console.WriteLine($"SHIR认证密钥1: {authKeys.AuthKey1}"); Console.WriteLine($"SHIR认证密钥2: {authKeys.AuthKey2}");
注意:确保使用的Azure.ResourceManager.DataFactory SDK为最新版本,旧版本可能未包含该方法。
内容的提问来源于stack exchange,提问作者ahad omer
相关产品推荐
相关产品推荐

