Udostępnij za pośrednictwem


Tworzenie aplikacji usługi App Service i wdrażanie prywatnego punktu końcowego przy użyciu szablonu usługi Azure Resource Manager

W tym przewodniku Szybki start użyjesz szablonu usługi Azure Resource Manager (ARM), aby utworzyć aplikację internetową i uwidocznić ją za pomocą prywatnego punktu końcowego.

Szablon usługi Azure Resource Manager to plik JavaScript Object Notation (JSON), który definiuje infrastrukturę i konfigurację projektu. W szablonie używana jest składnia deklaratywna. Możesz opisać zamierzone wdrożenie bez konieczności pisania sekwencji poleceń programowania w celu utworzenia wdrożenia.

Warunek wstępny

Potrzebujesz konta platformy Azure z aktywną subskrypcją. Utwórz konto bezpłatnie.

Tworzenie prywatnego punktu końcowego

Ten szablon tworzy prywatny punkt końcowy dla aplikacji internetowej platformy Azure.

Przegląd szablonu

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "virtualNetwork_name": {
            "type": "String",
            "metadata":{
                "description": "Name of the VNet"
            }
        },
        "serverFarm_name": {
            "type": "String",
            "defaultValue": "ServerFarm1",
            "metadata":{
                "description": "Name of the Web Farm"
            }
        },
        "site_name": {
            "type": "String",
            "metadata":{
                "description": "Web App name must be unique DNS name worldwide"
            }
        },
        "virtualNetwork_CIDR": {
            "type": "String",
            "defaultValue": "10.200.0.0/16",
            "metadata":{
                "description": "CIDR of your VNet"
            }
        },
        "subnet1_name": {
            "type": "String",
            "metadata":{
                "description": "Name of the Subnet"
            }
        },
        "subnet1_CIDR": {
            "type": "String",
            "defaultValue": "10.200.1.0/24",
            "metadata":{
                "description": "CIDR of your subnet"
            }
        },
        "location": {
            "type": "string",
            "defaultValue": "[resourceGroup().location]",
            "metadata":{
                "description": "Location for all resources."
            }
        },
        "SKU_name": {
            "type": "String",
            "defaultValue": "P1v2",
            "metadata":{
                "description": "SKU name, must be minimum P1v2"
            }
        },
        "SKU_tier": {
            "type": "String",
            "defaultValue": "PremiumV2",
            "metadata":{
                "description": "SKU tier, must be Premium"
            }
        },
        "SKU_size": {
            "type": "String",
            "defaultValue": "P1v2",
            "metadata":{
                "description": "SKU size, must be minimum P1v2"
            }
        },
        "SKU_family": {
            "type": "String",
            "defaultValue": "P1v2",
            "metadata":{
                "description": "SKU family, must be minimum P1v2"
            }
        },
        "privateEndpoint_name": {
            "type": "string",
            "metadata":{
                "description": "Name of your Private Endpoint"
            }
        },
        "privateLinkConnection_name": {
            "type": "string",
            "metadata":{
                "description": "Link name between your Private Endpoint and your Web App"
            }
        },
        "privateDNSZone_name": {
            "type": "string",
            "defaultValue": "privatelink.azurewebsites.net",
            "metadata":{
                "description": "Name must be privatelink.azurewebsites.net"
            }
        },
        "webapp_dns_name": {
            "type": "string",
            "defaultValue": ".azurewebsites.net",
            "metadata":{
                "description": "Name must be privatelink.azurewebsites.net"
            }
        }
    },
    "variables": {},
    "resources": [
        {
            "type": "Microsoft.Network/virtualNetworks",
            "apiVersion": "2020-04-01",
            "name": "[parameters('virtualNetwork_name')]",
            "location": "[parameters('location')]",
            "properties": {
                "addressSpace": {
                    "addressPrefixes": [
                        "[parameters('virtualNetwork_CIDR')]"
                    ]
                }
            }
        },
        {
            "type": "Microsoft.Network/virtualNetworks/subnets",
            "apiVersion": "2020-04-01",
            "name": "[concat(parameters('virtualNetwork_name'),'/', parameters('subnet1_name'))]",
            "dependsOn": [
                "[resourceId('Microsoft.Network/virtualNetworks', parameters('virtualNetwork_name'))]"
            ],
            "properties": {
                "addressPrefix": "[parameters('subnet1_CIDR')]",
                "privateEndpointNetworkPolicies": "Disabled"
            }
        },
        {
            "type": "Microsoft.Web/serverfarms",
            "apiVersion": "2019-08-01",
            "name": "[parameters('serverFarm_name')]",
            "location": "[parameters('location')]",
            "sku": {
                "name": "[parameters('SKU_name')]",
                "tier": "[parameters('SKU_tier')]",
                "size": "[parameters('SKU_size')]",
                "family": "[parameters('SKU_family')]",
                "capacity": 1
            },
            "kind": "app"

        },
        {
            "type": "Microsoft.Web/sites",
            "apiVersion": "2019-08-01",
            "name": "[parameters('site_name')]",
            "location": "[parameters('location')]",
            "dependsOn": [
                "[resourceId('Microsoft.Web/serverfarms', parameters('serverFarm_name'))]"
            ],
            "kind": "app",
            "properties": {
                "enabled": true,
                "hostNameSslStates": [
                    {
                        "name": "[concat(parameters('site_name'), parameters('webapp_dns_name'))]",
                        "sslState": "Disabled",
                        "hostType": "Standard"
                    },
                    {
                        "name": "[concat(parameters('site_name'), '.scm', parameters('webapp_dns_name'))]",
                        "sslState": "Disabled",
                        "hostType": "Repository"
                    }
                ],
                "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', parameters('serverFarm_name'))]"
            }
        },
        {
            "type": "Microsoft.Web/sites/config",
            "apiVersion": "2019-08-01",
            "name": "[concat(parameters('site_name'), '/web')]",
            "location": "[parameters('location')]",
            "dependsOn": [
                "[resourceId('Microsoft.Web/sites', parameters('site_name'))]"
            ],
            "properties": {
                "ftpsState": "AllAllowed"
            }
        },
        {
            "type": "Microsoft.Web/sites/hostNameBindings",
            "apiVersion": "2019-08-01",
            "name": "[concat(parameters('site_name'), '/', parameters('site_name'), parameters('webapp_dns_name'))]",
            "location": "[parameters('location')]",
            "dependsOn": [
                "[resourceId('Microsoft.Web/sites', parameters('site_name'))]"
            ],
            "properties": {
                "siteName": "[parameters('site_name')]",
                "hostNameType": "Verified"
            }
        },
        {
            "type": "Microsoft.Network/privateEndpoints",
            "apiVersion": "2019-04-01",
            "name": "[parameters('privateEndpoint_name')]",
            "location": "[parameters('location')]",
            "dependsOn": [
                "[resourceId('Microsoft.Web/sites', parameters('site_name'))]",
                "[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('virtualNetwork_name'), parameters('subnet1_name'))]"
            ],
            "properties": {
                "subnet": {
                    "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('virtualNetwork_name'), parameters('subnet1_name'))]"
                },
                "privateLinkServiceConnections": [
                    {
                        "name": "[parameters('privateLinkConnection_name')]",
                        "properties": {
                            "privateLinkServiceId": "[resourceId('Microsoft.Web/sites', parameters('site_name'))]",
                            "groupIds": [
                                "sites"
                            ]
                        }
                    }
                ]
            } 
        },
        {
            "type": "Microsoft.Network/privateDnsZones",
            "apiVersion": "2018-09-01",
            "name": "[parameters('privateDNSZone_name')]",
            "location": "global",
            "dependsOn": [
                "[resourceId('Microsoft.Network/virtualNetworks', parameters('virtualNetwork_name'))]"
            ] 
        },
        {
            "type": "Microsoft.Network/privateDnsZones/virtualNetworkLinks",
            "apiVersion": "2018-09-01",
            "name": "[concat(parameters('privateDNSZone_name'), '/', parameters('privateDNSZone_name'), '-link')]",
            "location": "global",
            "dependsOn": [
                "[resourceId('Microsoft.Network/privateDnsZones', parameters('privateDNSZone_name'))]",
                "[resourceId('Microsoft.Network/virtualNetworks', parameters('virtualNetwork_name'))]"
            ],
            "properties": {
                "registrationEnabled": false,
                "virtualNetwork": {
                    "id": "[resourceId('Microsoft.Network/virtualNetworks', parameters('virtualNetwork_name'))]"
                }
            }
        },
        {
            "type": "Microsoft.Network/privateEndpoints/privateDnsZoneGroups",
            "apiVersion": "2020-03-01",
            "name": "[concat(parameters('privateEndpoint_name'),'/dnsgroupname')]",
            "location": "[parameters('location')]",
            "dependsOn": [
               "[resourceId('Microsoft.Network/privateDnsZones', parameters('privateDNSZone_name'))]",
               "[resourceId('Microsoft.Network/privateEndpoints' , parameters('privateEndpoint_name'))]"
             ],
            "properties": {
                "privateDnsZoneConfigs": [
                    {
                        "name": "config1",
                        "properties": {
                             "privateDnsZoneId": "[resourceId('Microsoft.Network/privateDnsZones', parameters('privateDNSZone_name'))]"
                        }
                    }
                ]
            }
        }     
    ]
}

Wdrażanie szablonu

Poniżej przedstawiono sposób wdrażania szablonu usługi Azure Resource Manager na platformie Azure:

  1. Aby zalogować się na platformie Azure i otworzyć szablon, wybierz ten link: Wdróż na platformie Azure. Szablon tworzy sieć wirtualną, aplikację internetową, prywatny punkt końcowy i prywatną strefę DNS.
  2. Wybierz lub utwórz grupę zasobów.
  3. Wprowadź nazwę aplikacji internetowej, plan usługi aplikacja systemu Azure i prywatny punkt końcowy.
  4. Przeczytaj instrukcję dotyczącą warunków i postanowień. Jeśli zgadzasz się, wybierz pozycję Zgadzam się na powyższe warunki i postanowienia>Zakupu. Ukończenie wdrożenia może potrwać kilka minut.

Czyszczenie zasobów

Jeśli nie potrzebujesz już zasobów utworzonych za pomocą prywatnego punktu końcowego, usuń grupę zasobów. Spowoduje to usunięcie prywatnego punktu końcowego i wszystkich powiązanych zasobów.

Aby usunąć grupę zasobów, wywołaj Remove-AzResourceGroup polecenie cmdlet:

Remove-AzResourceGroup -Name <your resource group name>

Następne kroki

  • Więcej szablonów usługi Azure Resource Manager dla aplikacji internetowych usługi aplikacja systemu Azure Service można znaleźć w przykładach szablonów usługi ARM.