ARM 模板 listkeys() 无法找到 Azure 搜索

ARM Template listkeys() fails to find Azure Search

我正在创建一个 ARM 模板来部署 Azure 搜索实例和依赖于 Azure 搜索实例的函数应用程序。作为其中的一部分,我正在尝试使用搜索服务的 API 键预填充 Function Apps 应用程序设置。

我通过将以下内容添加到 FunctionAppSite 的应用程序设置之一的值中来执行此操作:

[listKeys(variables('searchServiceId'), '2015-08-19').key1]

我在变量部分得到了 searchServiceId

[resourceId('Microsoft.Search/searchServices', parameters('SearchServiceName'))]

FunctionAppSite 组件列出了对 AppServicePlanStorageAccountSearchService 的依赖项。

当我部署模板时,搜索服务被创建,然后出现错误,因为 listkeys 找不到搜索服务。这发生在服务创建后约 0.25 秒。

我很确定我的 listkeys 周围的语法是正确的,问题只是时间问题,但我不确定如何减慢它的速度。我尝试强制 StorageAccount 依赖于我模板中的 SearchService,希望依赖链能够足够慢,但是 listkeys 错误发生在创建搜索服务之后,但之前StorageAccount 已创建。

可以找到完整的模板 here,如果您想查看它的实际效果,可以在该存储库的 readme.md 上找到一个 'Deploy to Azure' 按钮。

嗯,查看 Microsoft.Search 的提供商操作:

Microsoft.Search/register/action
Microsoft.Search/checkNameAvailability/action
Microsoft.Search/searchServices/write
Microsoft.Search/searchServices/read
Microsoft.Search/searchServices/delete
Microsoft.Search/searchServices/start/action
Microsoft.Search/searchServices/stop/action
Microsoft.Search/searchServices/listAdminKeys/action
Microsoft.Search/searchServices/regenerateAdminKey/action
Microsoft.Search/searchServices/createQueryKey/action
Microsoft.Search/searchServices/queryKey/read
Microsoft.Search/searchServices/queryKey/delete

这就是你的做法:

 "[listAdminKeys(variables('searchServiceId'), '2015-08-19').PrimaryKey]"

列出提供商操作:

$ops = (Get-AzureRmProviderOperation -OperationSearchString */*).Operation