Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Azure资源管理模板中将DocumentDB(MongoDB)连接字符串用作环境变量_Azure_Azure Resource Manager_Azure Resource Group - Fatal编程技术网

如何在Azure资源管理模板中将DocumentDB(MongoDB)连接字符串用作环境变量

如何在Azure资源管理模板中将DocumentDB(MongoDB)连接字符串用作环境变量,azure,azure-resource-manager,azure-resource-group,Azure,Azure Resource Manager,Azure Resource Group,我想使用DocumentDB(MongoDB)连接字符串作为Azure资源管理模板中的环境变量。例如,我有一个资源组,它有一个wep应用程序和一个DocumentDB(MongoDB)数据库 "siteConfig": { "appSettings": [ { "name": "db", "value": "connection string" } ]

我想使用DocumentDB(MongoDB)连接字符串作为Azure资源管理模板中的环境变量。例如,我有一个资源组,它有一个wep应用程序和一个DocumentDB(MongoDB)数据库

"siteConfig": {
          "appSettings": [
            {
              "name": "db",
              "value": "connection string"
            }
          ]
        }

如何将环境变量分配给模板中的连接字符串?

经过一番努力:

"appSettings": [{
                    "Name": "DOCUMENTDB_ENDPOINT",
                    "Value": "[reference(concat('Microsoft.DocumentDb/databaseAccounts/', parameters('databaseAccountName'))).documentEndpoint]"
                }, {
                    "Name": "DOCUMENTDB_PRIMARY_KEY",
                    "Value": "[listKeys(resourceId('Microsoft.DocumentDb/databaseAccounts', parameters('databaseAccountName')), '2015-04-08').primaryMasterKey]"
                }]

ARM模板支持
listKeys
list{Value}
功能,更多细节我们可以参考。 我们可以找到DocumentDB,因此可以使用ListConnectionString函数在ARM模板中获取DocumentDB连接字符串

"appSettings": [
            {
              "name": "db",
              "value": " [listConnectionStrings(resourceId('Microsoft.DocumentDb/databaseAccounts', parameters('documentdb')), '2015-04-08').connectionStrings[0].connectionString]"
            }
对我来说,这是正确的。如果我们想为WebApp添加appsetting,我们还可以使用以下代码

  "resources": [
      {
          "name": "appsettings",
          "type": "config",
          "apiVersion": "2015-08-01",
          "dependsOn": [
              "[resourceId('Microsoft.Web/sites', variables('webSiteName'))]"
          ],
          "tags": {
              "displayName": "appsetting"
          },
        "properties": {
          "db": "[listConnectionStrings(resourceId('Microsoft.DocumentDb/databaseAccounts', parameters('documentdb')), '2015-04-08').connectionStrings[0].connectionString]"
        }
      }

  ]

检查Azure门户的结果

更新:

ARM模板演示代码

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "hostingPlanName": {
      "type": "string",
      "minLength": 1
    },
    "documentdb": {
      "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/"
      }
    },
    "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": "appsettings",
              "type": "config",
              "apiVersion": "2015-08-01",
              "dependsOn": [
                  "[resourceId('Microsoft.Web/sites', variables('webSiteName'))]"
              ],
              "tags": {
                  "displayName": "appsetting"
              },
            "properties": {
              "db": "[listConnectionStrings(resourceId('Microsoft.DocumentDb/databaseAccounts', parameters('documentdb')), '2015-04-08').connectionStrings[0].connectionString]"
            }
          }

      ]
    }
  ]
}
参数文件

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "hostingPlanName": {
            "value": "tomtest" //your hostingplan name
        },
        "skuName": {
            "value": "B1"
        },
        "documentdb": {
            "value": "tomdocument" // your documentdb name
        }

    }
}

嘿@4c74356b41这是一个MongoDB连接字符串。是:)thanx,但它们不同,并给出了错误。好吧,这给出了一个答案,您可以轻松创建自己的连接字符串,我不知道MongoDB连接字符串的外观,但这提供了您创建该连接字符串所需的所有信息,我很确定@LeventOnerI不想占用您的时间,但我真的找不到,在MongoDB中,我应该只定义密码。var url='mongodb://:@.documents.azure.com:10250/?ssl=true';嘿@Tom Sun,如果我在属性中定义连接字符串,它会给出以下错误:部署模板验证失败:“找不到模板参数documentdb”。有关用法的详细信息,请参阅“”。(代码:InvalidTemplate)如果我在appsettings中定义,那么它不会给出任何值,只给出参考代码[ListConnectionString(resourceId('Microsoft.DocumentDb/databaseAccounts',parameters('DocumentDb'),'2015-04-08')。connectionString[0]。connectionString]我们需要在模板中定义参数DocumentDb
documentdb
是documentdb(MongoDB)的名称。您还可以从参数部分的屏幕截图中获得定义。是的,我尝试在属性中使用他的名字,但它也不接受,现在我正在使用AppSetting进行测试。这不起作用,在我的模板中,参数的定义如下:“databaseAccounts_feedsdb_name_1”:{“defaultValue”:“feedsdb”,“type”:“String”},我不知道我做错了什么