部署含CosmosDB连接的LogicApp时遇ApiNotFound错误求助
问题:Logic App部署Cosmos DB连接失败,提示ApiNotFound
我正尝试部署一个配置了Cosmos DB连接的Logic App,Cosmos DB资源已成功部署,但连接环节失败。
错误信息
{
"status": "Failed",
"error": {
"code": "ApiNotFound",
"message": "The API 'cosmosdb' could not be found."
} }
我的ARM模板
{"$schema":"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#","contentVersion":"1.0.0.0","parameters":{"databaseAccounts_wkshp_cosmos_name":{"defaultValue":"mycosmosdb","type":"String"},"backendLogicApp":{"defaultValue":"t12msds5lg","type":"String"},"location":{"defaultValue":"westus2","type":"String"},"cosmosConnection":{"defaultValue":"cosmos","type":"String"}},"resources":[{"type":"Microsoft.Logic/workflows","apiVersion":"2019-05-01","name":"[parameters('backendLogicApp')]","location":"[parameters('location')]","dependsOn":["[resourceId('Microsoft.Web/connections', parameters('cosmosConnection'))]"],"properties":{"state":"Enabled","definition":{"$schema":"https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#","contentVersion":"1.0.0.0","parameters":{"$connections":{"defaultValue":{},"type":"Object"}},"triggers":{},"actions":{},"outputs":{}},"parameters":{"$connections":{"value":{"cosmosdb":{"connectionId":"[resourceId('Microsoft.Web/connections', parameters('databaseAccounts_wkshp_cosmos_name'))]","connectionName":"cosmosdb","id":"[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'cosmosdb')]"}}}}},{"type":"Microsoft.DocumentDB/databaseAccounts","apiVersion":"2022-08-15","name":"[parameters('databaseAccounts_wkshp_cosmos_name')]","location":"[parameters('location')]","tags":{"defaultExperience":"Core (SQL)","hidden-cosmos-mmspecial":""},"kind":"GlobalDocumentDB","identity":{"type":"None"},"properties":{"publicNetworkAccess":"Enabled","enableAutomaticFailover":false,"enableMultipleWriteLocations":false,"isVirtualNetworkFilterEnabled":false,"virtualNetworkRules":[],"disableKeyBasedMetadataWriteAccess":false,"enableFreeTier":false,"enableAnalyticalStorage":true,"analyticalStorageConfiguration":{"schemaType":"WellDefined"},"databaseAccountOfferType":"Standard","defaultIdentity":"FirstPartyIdentity","networkAclBypass":"None","disableLocalAuth":false,"enablePartitionMerge":false,"consistencyPolicy":{"defaultConsistencyLevel":"Session","maxIntervalInSeconds":5,"maxStalenessPrefix":100},"locations":[{"locationName":"West US","provisioningState":"Succeeded","failoverPriority":0,"isZoneRedundant":false}],"cors":[],"capabilities":[{"name":"EnableServerless"}],"ipRules":[],"backupPolicy":{"type":"Periodic","periodicModeProperties":{"backupIntervalInMinutes":240,"backupRetentionIntervalInHours":8,"backupStorageRedundancy":"Geo"}},"networkAclBypassResourceIds":[],"keysMetadata":{}}},{"type":"Microsoft.DocumentDB/databaseAccounts/sqlDatabases","apiVersion":"2022-08-15","name":"[concat(parameters('databaseAccounts_wkshp_cosmos_name'), '/SQLDatabase')]","dependsOn":["[resourceId('Microsoft.DocumentDB/databaseAccounts', parameters('databaseAccounts_wkshp_cosmos_name'))]"],"properties":{"resource":{"id":"SQLDatabase"}}},{"type":"Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions","apiVersion":"2022-08-15","name":"[concat(parameters('databaseAccounts_wkshp_cosmos_name'), '/00000000-0000-0000-0000-000000000001')]","dependsOn":["[resourceId('Microsoft.DocumentDB/databaseAccounts', parameters('databaseAccounts_wkshp_cosmos_name'))]"],"properties":{"roleName":"Cosmos DB Built-in Data Reader","type":"BuiltInRole","assignableScopes":["[resourceId('Microsoft.DocumentDB/databaseAccounts', parameters('databaseAccounts_wkshp_cosmos_name'))]"],"permissions":[{"dataActions":["Microsoft.DocumentDB/databaseAccounts/readMetadata","Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/executeQuery","Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/readChangeFeed","Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/read"],"notDataActions":[]}]}},{"type":"Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions","apiVersion":"2022-08-15","name":"[concat(parameters('databaseAccounts_wkshp_cosmos_name'), '/00000000-0000-0000-0000-000000000002')]","dependsOn":["[resourceId('Microsoft.DocumentDB/databaseAccounts', parameters('databaseAccounts_wkshp_cosmos_name'))]"],"properties":{"roleName":"Cosmos DB Built-in Data Contributor","type":"BuiltInRole","assignableScopes":["[resourceId('Microsoft.DocumentDB/databaseAccounts', parameters('databaseAccounts_wkshp_cosmos_name'))]"],"permissions":[{"dataActions":["Microsoft.DocumentDB/databaseAccounts/readMetadata","Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/*","Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/*"],"notDataActions":[]}]}},{"type":"Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers","apiVersion":"2022-08-15","name":"[concat(parameters('databaseAccounts_wkshp_cosmos_name'), '/SQLDatabase/transactionDb')]","dependsOn":["[resourceId('Microsoft.DocumentDB/databaseAccounts/sqlDatabases', parameters('databaseAccounts_wkshp_cosmos_name'), 'SQLDatabase')]","[resourceId('Microsoft.DocumentDB/databaseAccounts', parameters('databaseAccounts_wkshp_cosmos_name'))]"],"properties":{"resource":{"id":"transactionDb","indexingPolicy":{"indexingMode":"consistent","automatic":true,"includedPaths":[{"path":"/*"}],"excludedPaths":[{"path":"/\"_etag\"/?"}]},"partitionKey":{"paths":["/id"],"kind":"Hash","version":2},"uniqueKeyPolicy":{"uniqueKeys":[]},"conflictResolutionPolicy":{"mode":"LastWriterWins","conflictResolutionPath":"/_ts"},"analyticalStorageTtl":-1}}},{"type":"Microsoft.Web/connections","apiVersion":"2016-06-01","name":"[parameters('cosmosConnection')]","location":"[parameters('location')]","dependsOn":["[resourceId('Microsoft.DocumentDB/databaseAccounts', parameters('databaseAccounts_wkshp_cosmos_name'))]"],"properties":{"displayName":"Router","api":{"id":"[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'cosmosdb')]"},"parameterValues":{"connectionString":"[listConnectionStrings(resourceId('Microsoft.DocumentDB/databaseAccounts', parameters('databaseAccounts_wkshp_cosmos_name')), '2019-12-12').connectionStrings[0].connectionString]"}}}]
解决方案
错误原因
- Logic App连接ID引用错误:Logic App的
$connections配置中,connectionId错误指向了Cosmos DB账户的资源ID,而非Microsoft.Web/connections类型的连接资源ID。 - 托管API名称不匹配:部分Azure地域中,Cosmos DB的托管API标识为
documentdb而非cosmosdb,导致无法找到对应API。
修正步骤
1. 修正Logic App的连接参数
在Microsoft.Logic/workflows的parameters.$connections.value.cosmosdb节点,调整connectionId和connectionName,并替换API标识:
"cosmosdb": { "connectionId": "[resourceId('Microsoft.Web/connections', parameters('cosmosConnection'))]", "connectionName": "[parameters('cosmosConnection')]", "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'documentdb')]" }
2. 修正Microsoft.Web/connections的API ID
将Microsoft.Web/connections资源中的api.id里的cosmosdb改为documentdb:
"api": { "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'documentdb')]" }
完整修正后的核心配置片段
{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "databaseAccounts_wkshp_cosmos_name": { "defaultValue": "mycosmosdb", "type": "String" }, "backendLogicApp": { "defaultValue": "t12msds5lg", "type": "String" }, "location": { "defaultValue": "westus2", "type": "String" }, "cosmosConnection": { "defaultValue": "cosmos", "type": "String" } }, "resources": [ { "type": "Microsoft.Logic/workflows", "apiVersion": "2019-05-01", "name": "[parameters('backendLogicApp')]", "location": "[parameters('location')]", "dependsOn": [ "[resourceId('Microsoft.Web/connections', parameters('cosmosConnection'))]" ], "properties": { "state": "Enabled", "definition": { "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#", "contentVersion": "1.0.0.0", "parameters": { "$connections": { "defaultValue": {}, "type": "Object" } }, "triggers": {}, "actions": {}, "outputs": {} }, "parameters": { "$connections": { "value": { "cosmosdb": { "connectionId": "[resourceId('Microsoft.Web/connections', parameters('cosmosConnection'))]", "connectionName": "[parameters('cosmosConnection')]", "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'documentdb')]" } } } } } }, // 其余Cosmos DB资源配置保持不变 { "type": "Microsoft.Web/connections", "apiVersion": "2016-06-01", "name": "[parameters('cosmosConnection')]", "location": "[parameters('location')]", "dependsOn": [ "[resourceId('Microsoft.DocumentDB/databaseAccounts', parameters('databaseAccounts_wkshp_cosmos_name'))]" ], "properties": { "displayName": "Router", "api": { "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'documentdb')]" }, "parameterValues": { "connectionString": "[listConnectionStrings(resourceId('Microsoft.DocumentDB/databaseAccounts', parameters('databaseAccounts_wkshp_cosmos_name')), '2019-12-12').connectionStrings[0].connectionString]" } } } ] }
额外验证
可以通过Azure CLI执行以下命令,确认目标地域的Cosmos DB托管API名称:
az resource list --resource-type Microsoft.Web/locations/managedApis --location westus2
内容的提问来源于stack exchange,提问作者webber
相关产品推荐
相关产品推荐

