gpt4 book ai didi

azure - 从 Azure Function App 提取 Kusto 数据以 403 结束

转载 作者:行者123 更新时间:2023-12-03 04:04:24 24 4
gpt4 key购买 nike

我尝试将数据从 azure 函数应用提取到 ADX 数据库中。我按照文章 here 中的说明进行操作。

不同的是,我想将数据插入表中。我遇到了 403 错误“Principal 'aadapp=;'”无权访问表”

我做了什么:我创建了一个具有以下 API 权限的 AAD 应用程序: AAD App configured permission

我通过 Kusto Explorer 配置了数据库:

.add database myDB ingestors ('aadapp=;') 'theAADAppname'

.add table PressureRecords ingestors ('aadapp=;') 'theAADAppname'

.add table TemperatureRecords ingestors ('aadapp=;') 'theAADAppname'

我的代码:

 var kcsbDM = new KustoConnectionStringBuilder($"https://ingest-{serviceNameAndRegion}.kusto.windows.net:443/").WithAadApplicationKeyAuthentication(
applicationClientId: "<my AD app Id>",
applicationKey: "<my App Secret from Certificates & secrets>",
authority: "<my tenant Id>");

using (var ingestClient = KustoIngestFactory.CreateQueuedIngestClient(kcsbDM))
{

var ingestProps = new KustoQueuedIngestionProperties(databaseName, tableName);
ingestProps.ReportLevel = IngestionReportLevel.FailuresAndSuccesses;
ingestProps.ReportMethod = IngestionReportMethod.Queue;
ingestProps.JSONMappingReference = mappingName;
ingestProps.Format = DataSourceFormat.json;

using (var memStream = new MemoryStream())
using (var writer = new StreamWriter(memStream))
{
var messageString = JsonConvert.SerializeObject(myObject); // maps to the table / mapping
writer.WriteLine(messageString);
writer.Flush();
memStream.Seek(0, SeekOrigin.Begin);

// Post ingestion message
ingestClient.IngestFromStream(memStream, ingestProps, leaveOpen: true);
}

最佳答案

问题是您在此摄取命令中使用的映射与现有表架构不匹配(它具有附加列)。在这些情况下,Azure 数据资源管理器 (Kusto) 尝试添加它在映射中找到的其他列。由于应用程序拥有的权限是“摄取者”,因此无法修改表结构,因此摄取失败。

在您的具体情况下,您的表有一列以特定大小写编写,并且在摄取映射中,同一列具有不同的大小写(针对一个字符),因此它被视为新列。

在这种情况下,我们将考虑提供更好的错误消息。

关于azure - 从 Azure Function App 提取 Kusto 数据以 403 结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60709330/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com