Невозможно создать КБ в QnA Maker при развертывании через ARM (ключи конечной точки не найдены)

У меня возникла проблема, из-за которой я не могу создавать в QnA Maker КБ для служб, которые я развернул с помощью шаблона ARM / DevOps. Здесь и на Github есть ряд проблем, но основные предложения (создать все ресурсы в одном регионе, ничего больше не добавлять в план обслуживания приложений, удалить и повторно развернуть) у меня не сработали. Как уже отмечалось, ресурсы были созданы и удалены несколько раз с одинаковыми именами, поэтому я не знаю, является ли это частью проблемы. Ресурсы создаются отлично (когнитивная служба, служба приложений, план службы приложений, поиск Azure и аналитика приложений), все в WestUS, но тогда я не могу создать базу знаний ни через API, ни непосредственно на qnamaker.ai. В обоих случаях я получаю сообщение об ошибке:

Ключи конечной точки не найдены.

Я могу получить ключи через Azure CLI, плюс они отображаются на портале, так что проблема не в этом. Возможно, это проблема с ключом авторизации EndpointKey, который создается / отображается после публикации новой базы знаний, но, поскольку я не могу создать или опубликовать ее, я не могу найти этот ключ. Не уверен, что это ключ, о котором идет речь в сообщении об ошибке.

Вот шаблон ARM, который я использую для настройки ресурсов.

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "sites_etn_qnamaker_name": {
            "defaultValue": "etn-qnamaker",
            "type": "string"
        },
        "serverfarms_etn_qnamaker_name": {
            "defaultValue": "etn-qnamaker",
            "type": "string"
        },
        "components_etn_qnamaker_ai_name": {
            "defaultValue": "etn-qnamaker-ai",
            "type": "string"
        },
        "accounts_etn_qnamaker_name": {
            "defaultValue": "etn-qnamaker",
            "type": "string"
        },
        "searchServices_etnqnamaker_azsearch_name": {
            "defaultValue": "etnqnamaker-azsearch",
            "type": "string"
        },
        "smartdetectoralertrules_failure_anomalies___etn_qnamaker_ai_name": {
            "defaultValue": "failure anomalies - etn-qnamaker-ai",
            "type": "string"
        },
        "actiongroups_application_20insights_20smart_20detection_externalid": {
            "defaultValue": "/subscriptions/REDACTED/resourceGroups/avcnc-chatbot-rg/providers/microsoft.insights/actiongroups/application%20insights%20smart%20detection",
            "type": "string"
        }
    },
    "variables": {},
    "resources": [
        {
            "type": "Microsoft.CognitiveServices/accounts",
            "apiVersion": "2017-04-18",
            "name": "[parameters('accounts_etn_qnamaker_name')]",
            "location": "westus",
            "sku": {
                "name": "S0"
            },
            "kind": "QnAMaker",
            "properties": {
                "apiProperties": {
                    "qnaRuntimeEndpoint": "[concat('https://', parameters('accounts_etn_qnamaker_name'), '.azurewebsites.net')]"
                },
                "customSubDomainName": "[parameters('accounts_etn_qnamaker_name')]"
            }
        },
        {
            "type": "Microsoft.Insights/components",
            "apiVersion": "2015-05-01",
            "name": "[parameters('components_etn_qnamaker_ai_name')]",
            "location": "westus",
            "tags": {
                "hidden-link:/subscriptions/REDACTED/resourceGroups/ENTP-Chatbot-rg/providers/Microsoft.Web/sites/etn-qnamaker": "Resource"
            },
            "kind": "web",
            "properties": {
                "Application_Type": "web"
            }
        },
        {
            "type": "Microsoft.Search/searchServices",
            "apiVersion": "2015-08-19",
            "name": "[parameters('searchServices_etnqnamaker_azsearch_name')]",
            "location": "West US",
            "sku": {
                "name": "basic"
            },
            "properties": {
                "replicaCount": 1,
                "partitionCount": 1,
                "hostingMode": "default"
            }
        },
        {
            "type": "Microsoft.Web/serverfarms",
            "apiVersion": "2018-02-01",
            "name": "[parameters('serverfarms_etn_qnamaker_name')]",
            "location": "West US",
            "sku": {
                "name": "S1",
                "tier": "Standard",
                "size": "S1",
                "family": "S",
                "capacity": 1
            },
            "kind": "app",
            "properties": {
                "perSiteScaling": false,
                "maximumElasticWorkerCount": 1,
                "isSpot": false,
                "reserved": false,
                "isXenon": false,
                "hyperV": false,
                "targetWorkerCount": 0,
                "targetWorkerSizeId": 0
            }
        },
        {
            "type": "microsoft.alertsmanagement/smartdetectoralertrules",
            "apiVersion": "2019-06-01",
            "name": "[parameters('smartdetectoralertrules_failure_anomalies___etn_qnamaker_ai_name')]",
            "location": "global",
            "dependsOn": [
                "[resourceId('microsoft.insights/components', parameters('components_etn_qnamaker_ai_name'))]"
            ],
            "properties": {
                "description": "Failure Anomalies notifies you of an unusual rise in the rate of failed HTTP requests or dependency calls.",
                "state": "Enabled",
                "severity": "Sev3",
                "frequency": "PT1M",
                "detector": {
                    "id": "FailureAnomaliesDetector",
                    "name": "Failure Anomalies",
                    "description": "Detects if your application experiences an abnormal rise in the rate of HTTP requests or dependency calls that are reported as failed. The anomaly detection uses machine learning algorithms and occurs in near real time, therefore there's no need to define a frequency for this signal.<br/></br/>To help you triage and diagnose the problem, an analysis of the characteristics of the failures and related telemetry is provided with the detection. This feature works for any app, hosted in the cloud or on your own servers, that generates request or dependency telemetry - for example, if you have a worker role that calls <a class=\"ext-smartDetecor-link\" href=\\\"https://docs.microsoft.com/en-us/azure/application-insights/app-insights-api-custom-events-metrics#trackrequest\\\" target=\\\"_blank\\\">TrackRequest()</a> or <a class=\"ext-smartDetecor-link\" href=\\\"https://docs.microsoft.com/en-us/azure/application-insights/app-insights-api-custom-events-metrics#trackdependency\\\" target=\\\"_blank\\\">TrackDependency()</a>.",
                    "supportedResourceTypes": [
                        "ApplicationInsights"
                    ],
                    "imagePaths": [
                        "https://globalsmartdetectors.blob.core.windows.net/detectors/FailureAnomaliesDetector/v0.18/FailureAnomaly.png"
                    ]
                },
                "scope": [
                    "[resourceId('microsoft.insights/components', parameters('components_etn_qnamaker_ai_name'))]"
                ],
                "actionGroups": {
                    "groupIds": [
                        "[parameters('actiongroups_application_20insights_20smart_20detection_externalid')]"
                    ]
                }
            }
        },
        {
            "type": "Microsoft.Web/sites",
            "apiVersion": "2018-11-01",
            "name": "[parameters('sites_etn_qnamaker_name')]",
            "location": "West US",
            "dependsOn": [
                "[resourceId('Microsoft.Web/serverfarms', parameters('serverfarms_etn_qnamaker_name'))]"
            ],
            "tags": {
                "hidden-related:/subscriptions/REDACTED/resourcegroups/ENTP-Chatbot-rg/providers/Microsoft.Web/serverfarms/etn-qnamaker": "empty"
            },
            "kind": "app",
            "properties": {
                "enabled": true,
                "hostNameSslStates": [
                    {
                        "name": "[concat(parameters('sites_etn_qnamaker_name'), '.azurewebsites.net')]",
                        "sslState": "Disabled",
                        "hostType": "Standard"
                    },
                    {
                        "name": "[concat(parameters('sites_etn_qnamaker_name'), '.scm.azurewebsites.net')]",
                        "sslState": "Disabled",
                        "hostType": "Repository"
                    }
                ],
                "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', parameters('serverfarms_etn_qnamaker_name'))]",
                "reserved": false,
                "isXenon": false,
                "hyperV": false,
                "scmSiteAlsoStopped": false,
                "clientAffinityEnabled": true,
                "clientCertEnabled": false,
                "hostNamesDisabled": false,
                "containerSize": 0,
                "dailyMemoryTimeQuota": 0,
                "httpsOnly": false,
                "redundancyMode": "None"
            }
        },
        {
            "type": "Microsoft.Web/sites/config",
            "apiVersion": "2018-11-01",
            "name": "[concat(parameters('sites_etn_qnamaker_name'), '/web')]",
            "location": "West US",
            "dependsOn": [
                "[resourceId('Microsoft.Web/sites', parameters('sites_etn_qnamaker_name'))]"
            ],
            "tags": {
                "hidden-related:/subscriptions/REDACTED/resourcegroups/ENTP-Chatbot-rg/providers/Microsoft.Web/serverfarms/etn-qnamaker": "empty"
            },
            "properties": {
                "numberOfWorkers": 1,
                "defaultDocuments": [
                    "Default.htm",
                    "Default.html",
                    "Default.asp",
                    "index.htm",
                    "index.html",
                    "iisstart.htm",
                    "default.aspx",
                    "index.php",
                    "hostingstart.html"
                ],
                "netFrameworkVersion": "v4.0",
                "phpVersion": "5.6",
                "requestTracingEnabled": false,
                "remoteDebuggingEnabled": false,
                "httpLoggingEnabled": false,
                "logsDirectorySizeLimit": 35,
                "detailedErrorLoggingEnabled": false,
                "publishingUsername": "[concat('$',parameters('sites_etn_qnamaker_name'))]",
                "scmType": "None",
                "use32BitWorkerProcess": true,
                "webSocketsEnabled": false,
                "alwaysOn": false,
                "managedPipelineMode": "Integrated",
                "virtualApplications": [
                    {
                        "virtualPath": "/",
                        "physicalPath": "site\\wwwroot",
                        "preloadEnabled": false
                    }
                ],
                "loadBalancing": "LeastRequests",
                "experiments": {
                    "rampUpRules": []
                },
                "autoHealEnabled": false,
                "cors": {
                    "allowedOrigins": [
                        "*"
                    ],
                    "supportCredentials": false
                },
                "localMySqlEnabled": false,
                "ipSecurityRestrictions": [
                    {
                        "ipAddress": "Any",
                        "action": "Allow",
                        "priority": 1,
                        "name": "Allow all",
                        "description": "Allow all access"
                    }
                ],
                "scmIpSecurityRestrictions": [
                    {
                        "ipAddress": "Any",
                        "action": "Allow",
                        "priority": 1,
                        "name": "Allow all",
                        "description": "Allow all access"
                    }
                ],
                "scmIpSecurityRestrictionsUseMain": false,
                "http20Enabled": false,
                "minTlsVersion": "1.2",
                "ftpsState": "AllAllowed",
                "reservedInstanceCount": 0
            }
        },
        {
            "type": "Microsoft.Web/sites/hostNameBindings",
            "apiVersion": "2018-11-01",
            "name": "[concat(parameters('sites_etn_qnamaker_name'), '/', parameters('sites_etn_qnamaker_name'), '.azurewebsites.net')]",
            "location": "West US",
            "dependsOn": [
                "[resourceId('Microsoft.Web/sites', parameters('sites_etn_qnamaker_name'))]"
            ],
            "properties": {
                "siteName": "[parameters('sites_etn_qnamaker_name')]",
                "hostNameType": "Verified"
            }
        }
    ]
}

Вот лишь несколько сайтов, которые я проверял

РЕДАКТИРОВАТЬ: создание базы знаний не удается как через qnamaker.ai, так и через API. На qnamaker.ai я получаю следующее сообщение при попытке создать КБ:

сообщение об ошибке qnamaker.ai

А вот сценарий PowerShell, который я использовал, чтобы попытаться создать его программно:

$body = Get-Content '$(System.DefaultWorkingDirectory)/_AveryCreek_OEM_CSC_Bot/models/qnamaker/Avery_Creek_Commercial_QnA.json' | Out-String

$header = @{
  "Content-Type"="application/json"
  "Ocp-Apim-Subscription-Key"="$(QNA_KEY)"
}

Invoke-RestMethod -Uri "https://westus.api.cognitive.microsoft.com/qnamaker/v4.0/knowledgebases/create" -Method 'Post' -Body $body -Headers $header

person billoverton    schedule 19.03.2020    source источник
comment
Хорошо, это ваш шаблон ARM. Какой код вы используете для создания КБ?   -  person Daniel Mann    schedule 20.03.2020
comment
Это не удается, даже если я захожу на qnamaker.ai и пытаюсь вручную просмотреть пользовательский интерфейс. Я сделаю снимок экрана, а также покажу вызов API, который я пытался сделать. Оба терпят неудачу с одной и той же ошибкой.   -  person billoverton    schedule 20.03.2020
comment
Возникали ли ошибки при использовании конвейера CI / CD в Azure DevOps? Это поможет сузить круг вопросов, относящихся к стороне Azure DevOps или нет.   -  person PatrickLu-MSFT    schedule 20.03.2020
comment
Нет, ресурсы развертываются без проблем.   -  person billoverton    schedule 20.03.2020
comment
Приемлем ли мой ответ? (Поскольку в этой теме участвует несколько человек, вам нужно @ упомянуть меня, если вы хотите, чтобы я увидел ваш ответ.)   -  person Kyle Delaney    schedule 24.03.2020
comment
Полезно с точки зрения следующих шагов, но моя проблема все еще остается. Оставьте это открытым на тот случай, если кто-то сможет решить проблему с развертыванием с помощью шаблона ARM. Или, если я получу ответ за пределами этого сайта, я обновлю любое предоставленное решение.   -  person billoverton    schedule 24.03.2020
comment
Спасибо @frackham за указание важных советов по корректирующим действиям, которые помогли немного приблизиться к фактическому решению, но, к сожалению, я все еще не добился успеха, даже если следую строгим принципам, единственное наблюдение, которое я мог бы прокомментировать на данный момент, - это создание необходимых услуг с помощью Портал qnamaker.ai всегда позволяет создавать КБ, но при создании ресурсов с помощью шаблона ARM возникает сбой (в моем случае статус corehealthstatus и proxyhealth вернул правильный идентификатор процесса без каких-либо исключений) и создание kb всегда бросает: EndpointKeysError, может быть, мне нужно изучить мор   -  person Pravin Ambekar.    schedule 11.12.2020


Ответы (2)


Я подозреваю, что вы, возможно, были отвергнуты, потому что это намного больше похоже на отчет об ошибке, чем на вопрос о переполнении стека. Из первого связанного вами выпуска:

Мы продолжим и закроем эту проблему, так как это проблема уровня обслуживания, и лучший способ сообщить о ней, если она возникнет снова, - через портал QnA, выбрав опцию «Общий запрос через пользовательское голосование» в правом верхнем углу.

Я все равно постараюсь вам ответить. Вы говорите, что пытались создать все ресурсы в одном регионе, но помните, что у групп ресурсов тоже есть местоположения. Вы должны убедиться, что группа ресурсов также находится в том же регионе, в соответствии с ответом на вопрос о переполнении стека, с которым вы связались: Невозможно создать базу знаний для когнитивной службы Azure (Ошибка: ключи конечной точки не найдены.)

Кажется, что иногда возникает проблема, заключающаяся в том, что ключи конечных точек можно найти только в том случае, если группа ресурсов, содержащая все ресурсы для службы QnA Maker (например, служба приложений, Application Insights, служба поиска и план службы приложений), размещена в том же регион как сама служба QnA Maker.

Я также вижу, что вы пытались ничего не добавлять в план обслуживания приложений, а также пытались удалить и повторно развернуть. Но вы также можете попробовать просто подождать некоторое время или повторить попытку более настойчиво. Из другого выпуска GitHub:

Эти сбои носят периодический характер. Если я буду постоянно повторять сбой, база знаний в конечном итоге будет создана.

И из этой проблемы:

Согласно команде QnA Maker, эта ошибка отображается, когда служба QnA Maker не завершила подготовку. Похоже, что сейчас существуют проблемы с обслуживанием QnA Maker, из-за которых процесс подготовки занимает даже больше времени, чем время ожидания в сценарии.

Если вы хотите поднять вопрос через UserVoice, я настоятельно рекомендую опубликовать его на форум, чтобы другие люди могли увидеть проблему и проголосовать за нее.

person Kyle Delaney    schedule 20.03.2020
comment
Спасибо. Я считаю, что официальный ответ на ошибку заключался в том, что это просто иногда случается и нужно продолжать попытки, поэтому вместо этого мне нужно попытаться найти какое-то обходное решение, которое я и надеялся сделать здесь. - person billoverton; 20.03.2020
comment
Также похоже, что User Voice на самом деле не поддерживает создание проблем, и проблема на Github уже была закрыта без разрешения. Я могу посмотреть, сможем ли мы передать это через наши каналы поддержки Microsoft. - person billoverton; 20.03.2020
comment
UserVoice, безусловно, лучшее место для обсуждения вопросов, чем Stack Overflow. На форуме UserVoice возникает вопрос: «Как мы можем улучшить QnA Maker?» и я думаю, у вас есть на это ответ. Несмотря на то, что может показаться, что это только для запросов функций, я могу заверить вас, что многие люди поднимают там вопросы, и отсутствие сообщения на форуме по этому поводу может быть причиной того, что команда QnA не воспринимает это достаточно серьезно. А когда дело доходит до GitHub, когда закрытая проблема на самом деле не решена, нужно снова поднять ее или иногда прокомментировать с просьбой о ее повторном открытии. - person Kyle Delaney; 20.03.2020
comment
Эти сбои носят временный характер. Если я буду постоянно повторять сбой, база знаний в конечном итоге будет создана. - гений - person roney; 15.05.2020
comment
@roney - Вы проголосовали против моего ответа из-за проблемы с GitHub, которую я цитировал? - person Kyle Delaney; 15.05.2020

Поиск проблем с ключами конечных точек и qnamaker дает неплохие результаты.

Я только что закрыл дело с поддержкой Azure по той же проблеме, и вот некоторые из шагов, которые мы проверили, чтобы исправить это, надеюсь, один из них будет полезен для всех, у кого возникнет эта проблема в будущем, как сообщение об ошибке не дает вам много повода для продолжения:

  • Сначала ознакомьтесь с часто задаваемыми вопросами по устранению неполадок https://docs.microsoft.com/en-us/azure/cognitive-services/qnamaker/troubleshooting. Нет ничего, что касалось бы ключей конечных точек, но когда вы нажимаете что-то еще, это хорошая отправная точка.
  • Все сервисы - проверьте свое нейминг. Например, для меня моя поисковая служба была названа иначе, чем ожидала остальная часть моей конфигурации, а также моя конечная точка времени выполнения когнитивных служб в свойствах api была неправильной. Тем не менее, все еще развернуты - вы не всегда будете получать ошибку в самой службе, если вы укажете неправильные имена для позже созданных служб, вы просто не сможете создать свои базы знаний.
  • Все услуги - проверьте свои артикулы. Хотя у меня нет проблем, которые я мог бы найти на бесплатном / базовом уровне, вы можете иметь только 1 когнитивную службу qna по бесплатной подписке, поэтому вам придется демонтировать и воссоздавать или обновлять по мере использования.
  • Когнитивная служба QnA - настройки конфигурации (ключи и значения) чувствительны к регистру.
  • План веб-приложения и веб-приложения Qna - проверьте, не исчерпаны ли ваши квоты, особенно память и ЦП.
  • QnA Web App - вы должны иметь возможность перейти на https: // {endpoint} / qnamaker / corehealthstatus и увидеть положительный ответ json, подобный этому (или, если есть initException, у вас, по крайней мере, есть еще одна ошибка):
{"processId":4920,"runtimeVersion":"5.46.0","initException":"","startupTime":"10/28/2020 2:44:39 PM"}
  • Qna Web App - вы также должны иметь возможность перейти на https: // {endpoint} / qnamaker / proxyhealthstatus и увидеть положительный ответ json, например:
{
  "coreVersion": "5.46.0",
  "coreProcessId": 4920,
  "coreUrl": "http://localhost:50061"
}
  • Qna Web App - не пытайтесь создать базу знаний, будь то через портал qnamaker или динамически, если ваше приложение не показывает аналогичных успехов на этих двух конечных точках проверки - при необходимости создайте ожидание. Вы почти наверняка увидите ошибки конечной точки через API, если сразу попадете в нее.

Для контрольных конечных точек, указанных выше, конечная точка отображается в разделе обзора вашего веб-приложения на портале и обычно является именем вашего приложения, например. https://example-app-qnamaker-webapp.azurewebsites.net/qnamaker/corehealthstatus, если приложение называлось example-app-qnamaker-webapp. В моих собственных сценариях создания я проверил значение coreProcessId ›0, а значение startupTime - допустимая дата, указывающая на готовность службы перед созданием базы знаний.

ИЗМЕНИТЬ: я бы также добавил, что если развертывание занимает много времени, часть вашей конфигурации, вероятно, неверна. Каждый раз, когда что-то работало правильно, это было быстрое развертывание (и это касается служб, баз знаний и вызовов как к az cli, так и к qnamaker REST api).

person frackham    schedule 28.10.2020