Azure cosmosdb ARM Template.json动态连接字符串

Azure cosmosdb ARM Template.json动态连接字符串,azure-cosmosdb,azure-resource-manager,Azure Cosmosdb,Azure Resource Manager,我从azure中获取了一个部署模板,并将其添加到Visual Studio 2015中的一个部署项目中。创建和部署资源组时,除了Web站点连接字符串外,其他一切都正常工作 我有TableStorage、DocumentDb和Redis实例都是由它创建的,我不知道如何获取这些项目的主连接字符串和主键,所以我不必手动添加它们 查看ListKey应该可以做到这一点,但在部署之后,该值为空。此外,尝试一个简单字符串(TestConnectionString)也会添加名称,但不会添加值 {

我从azure中获取了一个部署模板,并将其添加到Visual Studio 2015中的一个部署项目中。创建和部署资源组时,除了Web站点连接字符串外,其他一切都正常工作

我有TableStorage、DocumentDb和Redis实例都是由它创建的,我不知道如何获取这些项目的主连接字符串和主键,所以我不必手动添加它们

查看ListKey应该可以做到这一点,但在部署之后,该值为空。此外,尝试一个简单字符串(TestConnectionString)也会添加名称,但不会添加值

   {
      "type": "Microsoft.Web/sites",
      "kind": "app",
      "name": "[parameters('WebAppName')]",
      "apiVersion": "2015-08-01",
      "properties": {
        "name": "[parameters('WebAppName')]",
        "resources": [],
        "siteConfig": {
          "connectionstrings": [
            {
              "name": "DocumentDbKey",
              "value": "[listKeys(resourceId('Microsoft.DocumentDB/databaseAccounts', parameters('docDbName')), '2015-11-06').primaryMasterKey]",
              "type": "Custom"
            },
            {
              "name": "TestConnectionString",
              "value": "dummystring:pleaseignore;",
              "type": "Custom"
            }
          ]
        }
      },
      "dependsOn": [
        "[resourceId('Microsoft.DocumentDB/databaseAccounts', parameters('docDbName'))]",
      ]
    }

根据您的描述,我们可以使用ARM模板函数ListKeys来获取密钥。我们可以使用下面的模板代码来设置连接字符串。我测试了Azure存储连接字符串和文档DB密钥,它对我正常工作,请尝试。以下是我的详细步骤:

1.使用模板WebApp创建基本Azure资源组项目

2.从演示中删除不必要的资源

3.添加连接字符串设置

"resources": [
        {
          "name": "connectionstrings",
          "type": "config",
          "apiVersion": "2015-08-01",
          "dependsOn": [
            "[concat('Microsoft.Web/sites/', variables('webSiteName'))]"
          ],
          "tags": {
            "displayName": "tomConnectionString"
          },
          "properties": {
            "documentDB": {
              "value": "[listKeys(resourceId('Microsoft.DocumentDB/databaseAccounts', variables('docDbName')), '2015-11-06').primaryMasterKey]",
              "type": "Custom"
            },
            "storage": {
              "value": "[concat('DefaultEndpointsProtocol=https;AccountName=',parameters('storageAccountName'),';AccountKey=',concat(listKeys(variables('storageAccountId'),'2015-05-01-preview').key1))]",
              "type": "Custom"
            }
          }
        }
      ]
  • 添加相应的参数或变量,如存储信息或docDbName
  • 部署网站

  • 检查门户的结果

  • 完整模板代码:

    {
      "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
      "contentVersion": "1.0.0.0",
      "parameters": {
        "hostingPlanName": {
          "type": "string",
          "minLength": 1
        },
        "skuName": {
          "type": "string",
          "defaultValue": "S1",
          "allowedValues": [
            "F1",
            "D1",
            "B1",
            "B2",
            "B3",
            "S1",
            "S2",
            "S3",
            "P1",
            "P2",
            "P3",
            "P4"
          ],
          "metadata": {
            "description": "Describes plan's pricing tier and instance size. Check details at https://azure.microsoft.com/en-us/pricing/details/app-service/"
          }
        },
        "storageAccountName": {
          "type": "string",
          "metadata": {
            "description": "Storage Account to access blob storage."
          }
        },
        "skuCapacity": {
          "type": "int",
          "defaultValue": 1,
          "minValue": 1,
          "metadata": {
            "description": "Describes plan's instance count"
          }
        }
      },
      "variables": {
        "webSiteName": "[concat('webSite', uniqueString(resourceGroup().id))]",
        "docDbName": "tomdocumentdb",
        "storageAccountId": "[concat(resourceGroup().id,'/providers/Microsoft.Storage/storageAccounts/', parameters('storageAccountName'))]"
      },
      "resources": [
        {
          "apiVersion": "2015-08-01",
          "name": "[parameters('hostingPlanName')]",
          "type": "Microsoft.Web/serverfarms",
          "location": "[resourceGroup().location]",
          "tags": {
            "displayName": "HostingPlan"
          },
          "sku": {
            "name": "[parameters('skuName')]",
            "capacity": "[parameters('skuCapacity')]"
          },
          "properties": {
            "name": "[parameters('hostingPlanName')]"
          }
        },
        {
          "apiVersion": "2015-08-01",
          "name": "[variables('webSiteName')]",
          "type": "Microsoft.Web/sites",
          "location": "[resourceGroup().location]",
          "tags": {
            "[concat('hidden-related:', resourceGroup().id, '/providers/Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]": "Resource",
            "displayName": "Website"
          },
          "dependsOn": [
            "[concat('Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]"
          ],
          "properties": {
            "name": "[variables('webSiteName')]",
            "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', parameters('hostingPlanName'))]"
          },
    
          "resources": [
            {
              "name": "connectionstrings",
              "type": "config",
              "apiVersion": "2015-08-01",
              "dependsOn": [
                "[concat('Microsoft.Web/sites/', variables('webSiteName'))]"
              ],
              "tags": {
                "displayName": "tomConnectionString"
              },
              "properties": {
                "documentDB": {
                  "value": "[listKeys(resourceId('Microsoft.DocumentDB/databaseAccounts', variables('docDbName')), '2015-11-06').primaryMasterKey]",
                  "type": "Custom"
                },
                "storage": {
                  "value": "[concat('DefaultEndpointsProtocol=https;AccountName=',parameters('storageAccountName'),';AccountKey=',concat(listKeys(variables('storageAccountId'),'2015-05-01-preview').key1))]",
                  "type": "Custom"
                }
              }
            }
          ]
        }
      ]
    }
    
    更新:

    我们可以从中获得更多关于ARM模板的有用信息


    我也遇到了同样的问题,结果是保存连接字符串的属性的名称应该命名为
    connectionString
    ,因此您的siteConfig对象应该如下所示:

    "siteConfig": {
        "connectionstrings": [
        {
          "name": "DocumentDbKey",
          "connectionString": "[listKeys(resourceId('Microsoft.DocumentDB/databaseAccounts', parameters('docDbName')), '2015-11-06').primaryMasterKey]",
          "type": "Custom"
        },
        {
          "name": "TestConnectionString",
          "connectionString": "dummystring:pleaseignore;",
          "type": "Custom"
        }
      ]
    }
    

    现在重新部署以确认。将这些通过资源添加为“配置”类型与将其添加到“siteConfig”类型之间有什么区别?可以,但是否有任何地方可以记录“siteConfig”我们可以从()获得更有用的ARM信息。我会在答案中更新它。