azure - 如何在 Azure 的 ARM 模板中指定无服务器数据库?

标签 azure azure-sql-database serverless azure-sql-managed-instance

如何在 Azure 资源管理器 (ARM) 模板中为 Azure SQL 数据库(Microsoft.Sql/managedInstances 资源)指定通用:无服务器层?

{“resources”: [{..., “sku”: {..., “tier”: ???}}]} 的适当值是多少

简而言之,如何使用基础设施即代码来配置无服务器数据库?

最佳答案

这是一个模板(template.json):

{
    "$schema": "http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "collation": {
            "type": "string"
        },
        "databaseName": {
            "type": "string"
        },
        "tier": {
            "type": "string"
        },
        "skuName": {
            "type": "string"
        },
        "maxSizeBytes": {
            "type": "int"
        },
        "serverName": {
            "type": "string"
        },
        "serverLocation": {
            "type": "string"
        },
        "sampleName": {
            "type": "string",
            "defaultValue": ""
        },
        "zoneRedundant": {
            "type": "bool",
            "defaultValue": false
        },
        "licenseType": {
            "type": "string",
            "defaultValue": ""
        },
        "readScaleOut": {
            "type": "string",
            "defaultValue": "Disabled"
        },
        "numberOfReplicas": {
            "type": "int",
            "defaultValue": 0
        },
        "minCapacity": {
            "type": "string",
            "defaultValue": ""
        },
        "autoPauseDelay": {
            "type": "string",
            "defaultValue": ""
        },
        "databaseTags": {
            "type": "object",
            "defaultValue": {}
        },
        "enableADS": {
            "type": "bool",
            "defaultValue": false
        },
        "enableVA": {
            "type": "bool",
            "defaultValue": false
        }
    },
    "resources": [
        {
            "condition": "[parameters('enableVA')]",
            "apiVersion": "2016-01-01",
            "type": "Microsoft.Storage/storageAccounts",
            "name": "[variables('storageName')]",
            "location": "[parameters('serverLocation')]",
            "sku": {
                "name": "Standard_LRS"
            },
            "kind": "Storage",
            "properties": {}
        },
        {
            "type": "Microsoft.Sql/servers/databases",
            "apiVersion": "2017-10-01-preview",
            "location": "[parameters('serverLocation')]",
            "tags": "[parameters('databaseTags')]",
            "name": "[concat(parameters('serverName'), '/', parameters('databaseName'))]",
            "properties": {
                "collation": "[parameters('collation')]",
                "maxSizeBytes": "[parameters('maxSizeBytes')]",
                "sampleName": "[parameters('sampleName')]",
                "zoneRedundant": "[parameters('zoneRedundant')]",
                "licenseType": "[parameters('licenseType')]",
                "readScale": "[parameters('readScaleOut')]",
                "readReplicaCount": "[parameters('numberOfReplicas')]",
                "minCapacity": "[parameters('minCapacity')]",
                "autoPauseDelay": "[parameters('autoPauseDelay')]"
            },
            "sku": {
                "name": "[parameters('skuName')]",
                "tier": "[parameters('tier')]"
            }
        },
        {
            "condition": "[parameters('enableADS')]",
            "apiVersion": "2017-03-01-preview",
            "type": "Microsoft.Sql/servers/securityAlertPolicies",
            "name": "[concat(parameters('serverName'), '/Default')]",
            "dependsOn": [
                "[concat('Microsoft.Sql/servers/', parameters('serverName'), '/databases/', parameters('databaseName'))]"
            ],
            "properties": {
                "state": "Enabled",
                "disabledAlerts": [],
                "emailAddresses": [],
                "emailAccountAdmins": true
            }
        },
        {
            "condition": "[parameters('enableVA')]",
            "apiVersion": "2018-06-01-preview",
            "type": "Microsoft.Sql/servers/vulnerabilityAssessments",
            "name": "[concat(parameters('serverName'), '/Default')]",
            "properties": {
                "storageContainerPath": "[if(parameters('enableVA'), concat(reference(variables('storageName'), '2018-02-01').primaryEndpoints.blob, 'vulnerability-assessment'), '')]",
                "storageAccountAccessKey": "[if(parameters('enableVA'), listKeys(variables('storageName'), '2018-02-01').keys[0].value, '')]",
                "recurringScans": {
                    "isEnabled": true,
                    "emailSubscriptionAdmins": true,
                    "emails": []
                }
            },
            "dependsOn": [
                "[concat('Microsoft.Sql/servers/', parameters('serverName'), '/databases/', parameters('databaseName'))]",
                "[concat('Microsoft.Storage/storageAccounts/', variables('storageName'))]",
                "[concat('Microsoft.Sql/servers/', parameters('serverName'), '/securityAlertPolicies/Default')]"
            ]
        }
    ],
    "variables": {
        "subscriptionId": "[subscription().subscriptionId]",
        "resourceGroupName": "[resourceGroup().name]",
        "uniqueStorage": "[uniqueString(variables('subscriptionId'), variables('resourceGroupName'), parameters('serverLocation'))]",
        "storageName": "[tolower(concat('sqlva', variables('uniqueStorage')))]"
    }
}

这是模板的参数文件(parameters.json):

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "collation": {
            "value": "SQL_Latin1_General_CP1_CI_AS"
        },
        "databaseName": {
            "value": "MorilloServerless"
        },
        "tier": {
            "value": "GeneralPurpose"
        },
        "skuName": {
            "value": "GP_S_Gen5_1"
        },
        "maxSizeBytes": {
            "value": 34359738368
        },
        "sampleName": {
            "value": ""
        },
        "serverLocation": {
            "value": "eastus2"
        },
        "serverName": {
            "value": "morillo"
        },
        "zoneRedundant": {
            "value": false
        },
        "licenseType": {
            "value": "LicenseIncluded"
        },
        "readScaleOut": {
            "value": "Disabled"
        },
        "numberOfReplicas": {
            "value": 0
        },
        "minCapacity": {
            "value": "0.5"
        },
        "autoPauseDelay": {
            "value": "60"
        },
        "databaseTags": {
            "value": {}
        },
        "enableADS": {
            "value": false
        },
        "enableVA": {
            "value": false
        }
    }
}

查看 SKUName 以了解如何指定无服务器数据库。

关于azure - 如何在 Azure 的 ARM 模板中指定无服务器数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58136222/

相关文章:

powershell - 在资源组上使用 CpuPercentage 时,Azure PowerShell Add-AlertRule 返回错误请求

php - 如何在 Azure 应用程序服务 -> Web 应用程序 (Linux) 中启用 php 扩展

azure - Dynamics 365(通过 Azure 数据工厂)到 Azure SQL Server 之间的数据传输存在时区差异

java - 一旦由 Lambda/Serverless 部署,就无法摆脱 JSON 中的 '\' 字符

javascript - "Serverless-offline: route not found."在离线模式下运行 AWS Lambda 函数

amazon-web-services - Cognito 用户组可以用于无服务器应用程序中的动态组吗?

sql - Azure SQL 创建数据库范围的凭据

r - 如何为 R 包制作用于 CI 的 azure-pipeline.yml?

azure - 如何将 SQL DB 表添加到 Azure?

azure - 自动备份Azure SQL数据库