如何在 ARM 模板中引用在 Azure 门户中创建的现有存储账户?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在 ARM 模板中引用在 Azure 门户中创建的现有存储账户?相关的知识,希望对你有一定的参考价值。

`

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "InputstorageAccount": {
            "defaultValue": "inputstgdev",
            "type": "String"
        },
        "GitrepoBranch": {
           "type": "string",
           "defaultValue": "master",
           "metadata": {
                "description": "Name of the branch to use when deploying (Default = master)."
            }
        },
        "GitrepoURL": {
           "type": "string",
           "defaultValue": "https://github.com/FBoucher/AzUnzipEverything.git",
           "metadata": {
                "description": "URL to repo (Default = master)."
            }
        },
        "InputcontainerName": {
          "type": "string",
          "defaultValue": "inputcontainer",
          "metadata": {
            "description": "Specifies the name of the blob container."
          }
        },
        "OutputstorageAccount": {
            "defaultValue": "outputstgdev",
            "type": "String"
        },
        "OutputcontainerName": {
          "type": "string",
          "defaultValue": "outputcontainer",
          "metadata": {
            "description": "Specifies the name of the blob container."
          }
        }
    },
    "variables": {},
    "resources": [
        {
            "type": "Microsoft.Storage/storageAccounts/blobServices/containers",
            "apiVersion": "2019-06-01",
            "name": "[concat(parameters('InputstorageAccount'), '/default/', parameters('InputcontainerName'))]",
            "properties": {
                "publicAccess": "None"
            }
        },
        {
            "type": "Microsoft.Storage/storageAccounts/blobServices/containers",
            "apiVersion": "2019-06-01",
            "name": "[concat(parameters('OutputstorageAccount'), '/default/', parameters('OutputcontainerName'))]",
            "properties": {
                "publicAccess": "None"
            }
        },
        {
            "name": "serviceplan",
            "type": "Microsoft.Web/serverfarms",
            "apiVersion": "2018-02-01",
            "location": "[resourceGroup().location]",
            "sku": {
                "name": "F1",
                "capacity": 1
            },
            "tags": {
                "displayName": "serviceplan"
            },
            "properties": {
                "name": "serviceplan"
            }
        },
        {
            "name": "functionapp",
            "type": "Microsoft.Web/sites",
            "apiVersion": "2018-11-01",
            "location": "[resourceGroup().location]",
            "kind": "functionapp",
            "dependsOn": [
                "[resourceId('Microsoft.Web/serverfarms', 'serviceplan')]",
                "[resourceId('Microsoft.Storage/storageAccounts', parameters('InputstorageAccount'))]"
            ],
            "properties": {
                "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', 'serviceplan')]",
                "siteConfig": {
                    "appSettings": [
                        {
                            "name": "AzureWebJobsDashboard",
                            "value": "[concat('DefaultEndpointsProtocol=https;AccountName=', parameters('InputstorageAccount'), ';AccountKey=', listKeys(parameters('InputcontainerName'),'2015-05-01-preview').key1)]"
                        },
                        {
                            "name": "AzureWebJobsStorage",
                            "value": "[concat('DefaultEndpointsProtocol=https;AccountName=', parameters('InputstorageAccount'), ';AccountKey=', listKeys(parameters('InputcontainerName'),'2015-05-01-preview').key1)]"
                        },
                        {
                            "name": "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING",
                            "value": "[concat('DefaultEndpointsProtocol=https;AccountName=', parameters('InputstorageAccount'), ';AccountKey=', listKeys(parameters('InputcontainerName'),'2015-05-01-preview').key1)]"
                        },
                        {
                            "name": "WEBSITE_CONTENTSHARE",
                            "value": "[toLower('functionapp')]"
                        },
                        {
                            "name": "FUNCTIONS_EXTENSION_VERSION",
                            "value": "~2"
                        },
                        {
                            "name": "APPINSIGHTS_INSTRUMENTATIONKEY",
                            "value": "[reference(resourceId('microsoft.insights/components/', 'applicationInsightsName'), '2015-05-01').InstrumentationKey]"
                        },
                        {
                            "name": "FUNCTIONS_WORKER_RUNTIME",
                            "value": "dotnet"
                        }
                    ]
                }
            },
            "resources":[
                {
                    "apiVersion": "2015-08-01",
                    "name": "web",
                    "type": "sourcecontrols",
                    "dependsOn": [
                      "[resourceId('Microsoft.Web/sites/', parameters('InputstorageAccount'))]"
                    ],
                    "properties": {
                        "RepoUrl": "[parameters('GitrepoURL')]",
                        "branch": "[parameters('GitrepoBranch')]",
                        "publishRunbook": true,
                        "IsManualIntegration": true
                    }
                }
            ]

        }
    ]
}

`我有一个存储账户,叫 STGaccount 的容器,我用Azure门户创建了这个容器,并希望使用ARM模板创建一个名为 输入容器 在此 STGaccount. 每次我试图这样做,我得到一个错误信息,说存储帐户 STGaccount 我试图用ARM模板创建一个已经存在于资源组中的存储账户......所以我想我写ARM模板的方式是,它仍然会创建一个新的存储账户,其名称与我在资源组中已经存在的账户相似。实际上,我想做的是在ARM模板中引用已经存在的存储帐户,这样我就不必创建一个新的帐户。先谢谢你,我期待着你的回复。

答案

试试这个ARM模板,这将有助于你在现有的存储帐户创建一个容器。

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "storageAccountName": {
            "defaultValue": "STGaccount",
            "type": "String"
        },
        "containerName": {
          "type": "string",
          "defaultValue": "inputcontainer",
          "metadata": {
            "description": "Specifies the name of the blob container."
          }
        }
    },
    "variables": {},
    "resources": [
        {
            "type": "Microsoft.Storage/storageAccounts/blobServices/containers",
            "apiVersion": "2019-06-01",
            "name": "[concat(parameters('storageAccountName'), '/default/', parameters('containerName'))]",
            "properties": {
                "publicAccess": "None"
            }
        }
    ]
}

以上是关于如何在 ARM 模板中引用在 Azure 门户中创建的现有存储账户?的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 PowerShell 或 ARM 模板在 Azure 数据资源管理器中创建表和摄取映射

如何使用 arm 模板更新 azure appsettings

使用 ARM 模板对 Azure 存储帐户容器设置合法保留

在 ARM 模板中引用 Azure AD 服务主体 ID

使用 azure ARM 模板配置逻辑应用失败警报

如何安排部署ARM模板?