Я пытаюсь подключиться к учетной записи Data Lake Gen 2 с помощью субъекта-службы, созданного для доступа к Data Lake Gen 2 из функции Azure (с использованием триггера темы служебной шины)
Этот субъект-служба отлично работает с такими службами, как Azure Databricks . Но когда я пытаюсь подключиться из функции Azure, используя тот же субъект-службу, он выдает ошибку AuthorizationPermissionMismatch.
Только субъект-служба или управляемое удостоверение из функции Azure могут получить доступ к озеру данных.
Я следую коду, указанному на следующей странице документации Microsoft:
https://learn.microsoft.com/en-us/azure ... -directory -azure-ad
Я использовал приведенный ниже пример Python в качестве справочного материала, поскольку у меня не было полного примера C#:
https://learn.microsoft.com/en-us/azure ... oud-etl-05
Код функции как показано ниже:
using System;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;
using Microsoft.Extensions.Logging;
using Azure.Identity;
using Azure.Security.KeyVault.Secrets;
using System.Threading.Tasks;
using Azure.Storage.Files.DataLake;
using Azure.Storage.Files.DataLake.Models;
using System.Collections.Generic;
namespace FunctionApp1
{
public class Function1
{
[FunctionName("Function1")]
public async Task RunAsync([ServiceBusTrigger("service_bus_name", "subscription_name", Connection = "shared_access_key_connection_name")] string mySbMsg, ILogger log)
{
string accountName = "";
string clientID = "";
string clientSecret = "";
string tenantID = "";
var credential = new ClientSecretCredential(
tenantID, clientID, clientSecret, new TokenCredentialOptions());
string dfsUri = "https://" + accountName + ".dfs.core.windows.net";
DataLakeServiceClient dataLakeServiceClient = new DataLakeServiceClient(new Uri(dfsUri), credential);
string adls_fsys_name = "";
DataLakeFileSystemClient fileSystemClient = dataLakeServiceClient.GetFileSystemClient(adls_fsys_name);
await ListFilesInDirectory(fileSystemClient);
log.LogInformation($"C# ServiceBus topic trigger function processed message: {mySbMsg}");
}
public async Task ListFilesInDirectory(DataLakeFileSystemClient fileSystemClient)
{
string adls_dir_name = "";
IAsyncEnumerator
enumerator =
fileSystemClient.GetPathsAsync(adls_dir_name).GetAsyncEnumerator();
await enumerator.MoveNextAsync();
PathItem item = enumerator.Current;
while (item != null)
{
Console.WriteLine(item.Name);
if (!await enumerator.MoveNextAsync())
{
break;
}
item = enumerator.Current;
}
}
}
}
Я получил следующую ошибку:
2022-09-08T15:27:19.792 [Error] Executed 'Function1' (Failed, Id=c8d7cc56-f8df-4d51-b9ff-254dbe9d39b6, Duration=1166ms)This request is not authorized to perform this operation using this permission.RequestId:2b1dba4b-501f-00b8-2f97-c3d425000000Time:2022-09-08T15:27:19.7122855ZStatus: 403 (This request is not authorized to perform this operation using this permission.)ErrorCode: AuthorizationPermissionMismatchContent:{"error":{"code":"AuthorizationPermissionMismatch","message":"This request is not authorized to perform this operation using this permission.\nRequestId:2b1dba4b-501f-00b8-2f97-c3d425000000\nTime:2022-09-08T15:27:19.7122855Z"}}Headers:Server: Windows-Azure-HDFS/1.0,Microsoft-HTTPAPI/2.0x-ms-error-code: AuthorizationPermissionMismatchx-ms-request-id: 2b1dba4b-501f-00b8-2f97-c3d425000000x-ms-version: 2021-08-06x-ms-client-request-id: 7bfa87f0-16ab-44e3-b4b3-84a62b1222c8Date: Thu, 08 Sep 2022 15:27:19 GMTContent-Length: 227Content-Type: application/json; charset=utf-8
Подробнее здесь: https://stackoverflow.com/questions/736 ... pal-is-thr
При подключении к Data Lake Gen 2 из функции Azure с использованием субъекта-службы выдается ошибка AuthorizationPermiss ⇐ C#
Место общения программистов C#
1737054988
Anonymous
Я пытаюсь подключиться к учетной записи Data Lake Gen 2 с помощью субъекта-службы, созданного для доступа к Data Lake Gen 2 из функции Azure (с использованием триггера темы служебной шины)
Этот субъект-служба отлично работает с такими службами, как Azure Databricks . Но когда я пытаюсь подключиться из функции Azure, используя тот же субъект-службу, он выдает ошибку AuthorizationPermissionMismatch.
Только субъект-служба или управляемое удостоверение из функции Azure могут получить доступ к озеру данных.
Я следую коду, указанному на следующей странице документации Microsoft:
https://learn.microsoft.com/en-us/azure/storage/blobs/data-lake-storage-directory-file-acl-dotnet#connect-by-using-azure-active-directory -azure-ad
Я использовал приведенный ниже пример Python в качестве справочного материала, поскольку у меня не было полного примера C#:
https://learn.microsoft.com/en-us/azure/developer/python/tutorial-deploy-serverless-cloud-etl-05
Код функции как показано ниже:
using System;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;
using Microsoft.Extensions.Logging;
using Azure.Identity;
using Azure.Security.KeyVault.Secrets;
using System.Threading.Tasks;
using Azure.Storage.Files.DataLake;
using Azure.Storage.Files.DataLake.Models;
using System.Collections.Generic;
namespace FunctionApp1
{
public class Function1
{
[FunctionName("Function1")]
public async Task RunAsync([ServiceBusTrigger("service_bus_name", "subscription_name", Connection = "shared_access_key_connection_name")] string mySbMsg, ILogger log)
{
string accountName = "";
string clientID = "";
string clientSecret = "";
string tenantID = "";
var credential = new ClientSecretCredential(
tenantID, clientID, clientSecret, new TokenCredentialOptions());
string dfsUri = "https://" + accountName + ".dfs.core.windows.net";
DataLakeServiceClient dataLakeServiceClient = new DataLakeServiceClient(new Uri(dfsUri), credential);
string adls_fsys_name = "";
DataLakeFileSystemClient fileSystemClient = dataLakeServiceClient.GetFileSystemClient(adls_fsys_name);
await ListFilesInDirectory(fileSystemClient);
log.LogInformation($"C# ServiceBus topic trigger function processed message: {mySbMsg}");
}
public async Task ListFilesInDirectory(DataLakeFileSystemClient fileSystemClient)
{
string adls_dir_name = "";
IAsyncEnumerator
enumerator =
fileSystemClient.GetPathsAsync(adls_dir_name).GetAsyncEnumerator();
await enumerator.MoveNextAsync();
PathItem item = enumerator.Current;
while (item != null)
{
Console.WriteLine(item.Name);
if (!await enumerator.MoveNextAsync())
{
break;
}
item = enumerator.Current;
}
}
}
}
Я получил следующую ошибку:
2022-09-08T15:27:19.792 [Error] Executed 'Function1' (Failed, Id=c8d7cc56-f8df-4d51-b9ff-254dbe9d39b6, Duration=1166ms)This request is not authorized to perform this operation using this permission.RequestId:2b1dba4b-501f-00b8-2f97-c3d425000000Time:2022-09-08T15:27:19.7122855ZStatus: 403 (This request is not authorized to perform this operation using this permission.)ErrorCode: AuthorizationPermissionMismatchContent:{"error":{"code":"AuthorizationPermissionMismatch","message":"This request is not authorized to perform this operation using this permission.\nRequestId:2b1dba4b-501f-00b8-2f97-c3d425000000\nTime:2022-09-08T15:27:19.7122855Z"}}Headers:Server: Windows-Azure-HDFS/1.0,Microsoft-HTTPAPI/2.0x-ms-error-code: AuthorizationPermissionMismatchx-ms-request-id: 2b1dba4b-501f-00b8-2f97-c3d425000000x-ms-version: 2021-08-06x-ms-client-request-id: 7bfa87f0-16ab-44e3-b4b3-84a62b1222c8Date: Thu, 08 Sep 2022 15:27:19 GMTContent-Length: 227Content-Type: application/json; charset=utf-8
Подробнее здесь: [url]https://stackoverflow.com/questions/73663506/connecting-to-data-lake-gen-2-from-azure-function-using-service-principal-is-thr[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия