你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

教程:使用 ARM 模板发布 Azure Static Web Apps

本文说明如何使用 Azure 资源管理器模板(ARM 模板)部署 Azure Static Web Apps

在本教程中,学习:

  • 为 Azure Static Web Apps 创建 ARM 模板
  • 部署 ARM 模板以创建 Azure Static Web Apps 实例

先决条件

创建 GitHub 个人访问令牌

ARM 模板中参数之一是 repositoryToken,它使 ARM 部署过程可以与包含静态站点源代码的 GitHub 存储库交互。

  1. 从 GitHub 帐户配置文件(位于右上角)中选择“设置”。

  2. 选择“开发人员设置”。

  3. 选择“个人访问令牌”。

  4. 选择“生成新令牌”。

  5. 在“名称”字段中为此令牌提供名称,例如 myfirstswadeployment

  6. 选择令牌的过期时间,默认值为 30 天。

  7. 指定以下范围:存储库、工作流、写入:包

  8. 选择“生成令牌”。

  9. 复制令牌值并将其粘贴到文本编辑器以备稍后使用。

重要

请确保复制此令牌并将其存储在安全的位置。 请考虑将此令牌存储在 Azure Key Vault,并在 ARM 模板中对其进行访问。

创建 GitHub 存储库

本文使用 GitHub 模板存储库,使你能够轻松入门。 该模板具有一个入门应用,你可以使用 Azure Static Web Apps 部署它。

  1. 转到以下位置来创建新存储库:

    1. https://github.com/staticwebdev/vanilla-basic/generate
  2. 将存储库命名为 myfirstswadeployment

    注意

    Azure 静态 Web 应用需要至少一个 HTML 文件来创建 Web 应用。 在此步骤中创建的存储库包括单个 index.html 文件。

  3. 选择“创建存储库”。

    screenshot of the Create repository button.

创建 ARM 模板

满足先决条件后,下一步是定义 ARM 部署模板文件。

  1. 创建新文件夹以保存 ARM 模板。

  2. 创建一个新文件并将其命名为 azuredeploy.json。

  3. 将以下 ARM 模板片段粘贴到 azuredeploy.json。

        {
            "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
            "contentVersion": "1.0.0.0",
            "parameters": {
                "name": {
                    "type": "string"
                },
                "location": {
                    "type": "string"
                },
                "sku": {
                    "type": "string"
                },
                "skucode": {
                    "type": "string"
                },
                "repositoryUrl": {
                    "type": "string"
                },
                "branch": {
                    "type": "string"
                },
                "repositoryToken": {
                    "type": "securestring"
                },
                "appLocation": {
                    "type": "string"
                },
                "apiLocation": {
                    "type": "string"
                },
                "appArtifactLocation": {
                    "type": "string"
                },
                "resourceTags": {
                    "type": "object"
                },
                "appSettings": {
                    "type": "object"
                }
            },
            "resources": [
                {
                    "apiVersion": "2021-01-15",
                    "name": "[parameters('name')]",
                    "type": "Microsoft.Web/staticSites",
                    "location": "[parameters('location')]",
                    "tags": "[parameters('resourceTags')]",
                    "properties": {
                        "repositoryUrl": "[parameters('repositoryUrl')]",
                        "branch": "[parameters('branch')]",
                        "repositoryToken": "[parameters('repositoryToken')]",
                        "buildProperties": {
                            "appLocation": "[parameters('appLocation')]",
                            "apiLocation": "[parameters('apiLocation')]",
                            "appArtifactLocation": "[parameters('appArtifactLocation')]"
                        }
                    },
                    "sku": {
                        "Tier": "[parameters('sku')]",
                        "Name": "[parameters('skuCode')]"
                    },
                    "resources":[
                        {
                            "apiVersion": "2021-01-15",
                            "name": "appsettings",
                            "type": "config",
                            "location": "[parameters('location')]",
                            "properties": "[parameters('appSettings')]",
                            "dependsOn": [
                                "[resourceId('Microsoft.Web/staticSites', parameters('name'))]"
                            ]
                        }
                    ]
                }
            ]
        }
    
    
  4. 创建一个新文件并将其命名为 azuredeploy.parameters.json。

  5. 将以下 ARM 模板片段粘贴到 azuredeploy.parameters.json。

        {
            "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
            "contentVersion": "1.0.0.0",
            "parameters": {
                "name": {
                    "value": "myfirstswadeployment"
                },
                "location": { 
                    "value": "Central US"
                },   
                "sku": {
                    "value": "Free"
                },
                "skucode": {
                    "value": "Free"
                },
                "repositoryUrl": {
                    "value": "https://github.com/<YOUR-GITHUB-USER-NAME>/<YOUR-GITHUB-REPOSITORY-NAME>"
                },
                "branch": {
                    "value": "main"
                },
                "repositoryToken": {
                    "value": "<YOUR-GITHUB-PAT>" 
                },
                "appLocation": {
                    "value": "/"
                },
                "apiLocation": {
                    "value": ""
                },
                "appArtifactLocation": {
                    "value": "src"
                },
                "resourceTags": {
                    "value": {
                        "Environment": "Development",
                        "Project": "Testing SWA with ARM",
                        "ApplicationName": "myfirstswadeployment"
                    }
                },
                "appSettings": {
                    "value": {
                        "MY_APP_SETTING1": "value 1",
                        "MY_APP_SETTING2": "value 2"
                    }
                }
            }
        }
    
  6. 更新以下参数。

    参数 预期值
    repositoryUrl 提供 Static Web Apps GitHub 存储库的 URL。
    repositoryToken 提供 GitHub PAT 令牌。
  7. 在下一步中运行部署之前保存更新。

运行部署

你需要使用 Azure CLI 或 Azure PowerShell 来部署模板。

登录 Azure

若要部署模板,请登录到 Azure CLI 或 Azure PowerShell。

az login

如果你有多个 Azure 订阅,请选择要使用的订阅。 将 <SUBSCRIPTION-ID> 替换为订阅信息:

az account set --subscription <SUBSCRIPTION-ID>

创建资源组

部署模板时,请指定一个包含相关资源的资源组。 在运行部署命令之前,请使用 Azure CLI 或 Azure PowerShell 创建该资源组。

注意

本文中的 CLI 示例针对 Bash shell 编写。

resourceGroupName="myfirstswadeployRG"

az group create \
  --name $resourceGroupName \
  --location "Central US"

部署模板

使用这些部署选项之一来部署模板。


az deployment group create \
  --name DeployLocalTemplate \
  --resource-group $resourceGroupName \
  --template-file <PATH-TO-AZUREDEPLOY.JSON> \
  --parameters <PATH-TO-AZUREDEPLOY.PARAMETERS.JSON> \
  --verbose

若要详细了解如何使用 Azure CLI 部署模板,请参阅使用 ARM 模板和 Azure CLI 部署资源

查看网站

通过两个方面来部署静态应用。 第一个预配构成应用的基础 Azure 资源。 第二个是生成和发布应用程序的 GitHub Actions 工作流。

在导航到新静态站点之前,必须先完成部署生成的运行。

静态 Web 应用“概述”窗口显示了一系列链接,可帮助你与 Web 应用进行交互。

Overview window

  1. 单击“单击此处以查看 GitHub Actions 运行的状态”的标题,即可转到针对存储库运行的 GitHub Actions。 确认部署作业完成后,即可通过生成的 URL 导航到网站。

  2. GitHub Actions 工作流完成后,可以单击该 URL 链接以在新选项卡中打开网站。

清理资源

通过删除资源组来清理你部署的资源。

  1. 在 Azure 门户上的左侧菜单中选择“资源组” 。
  2. 在“按名称筛选”字段中输入资源组名称。
  3. 选择资源组名称。
  4. 在顶部菜单中选择“删除资源组”。

后续步骤