【问题标题】:Azure App Service ApiAppAzure 应用服务 ApiApp
【发布时间】:2018-03-16 19:26:35
【问题描述】:

我正在尝试使用 PowerShell 在 Azure App Service 中创建 API 应用程序。

默认情况下,我调用的 cmdlet 总是创建一个 Web 应用程序。如果可能的话,我想知道如何将类型/种类指定为Api App 而不是Web App

New-AzureRmWebApp -Name $name -Location $location -AppServicePlan $plan -ResourceGroupName $resourceGroup

从我的阅读来看,除了图标之外两者之间没有太大区别,如果这是我的应用程序的全部内容,是否值得将类型设置为“Api App”?

我正在使用 5.4.0 版的 AzureRM PowerShell 模块。

> Get-Module "AzureRM"

ModuleType Version    Name                                                 
---------- -------    ----
Script     5.4.0      AzureRM

【问题讨论】:

    标签: powershell azure azure-web-app-service azure-api-apps


    【解决方案1】:

    只需调用New-AzureRmResource 并传入-Kind 'api'

    # CREATE "just-an-api" API App
    
    $ResourceLocation = "West US"
    $ResourceName = "just-an-api"
    $ResourceGroupName = "demo"
    $PropertiesObject = @{
        # serverFarmId points to the App Service Plan resource id
        serverFarmId = "/subscriptions/SUBSCRIPTION-GUID/resourceGroups/demo/providers/Microsoft.Web/serverfarms/plan1"
    }
    
    New-AzureRmResource -Location $ResourceLocation `
        -PropertyObject $PropertiesObject `
        -ResourceGroupName $ResourceGroupName `
        -ResourceType Microsoft.Web/sites `
        -ResourceName "just-an-api/$ResourceName" `
        -Kind 'api' `
        -ApiVersion 2016-08-01 -Force
    

    ..产生一个 API 应用程序,Microsoft.Web/sites 资源 typeapi 类型:

    等等……你是怎么想出这些东西的?

    访问 https://resources.azure.com 并导航到现有的 API 应用程序,通过将 PowerShell 选项卡与 JSON 资源定义中的所需值组合来构建 PowerShell 语法。

    【讨论】:

    • 哎呀,我把kind 属性放错了地方。固定的!它是参数的一部分,而不是属性包。我的错。
    • 是否也可以为新的 API 应用指定应用服务计划?我想也许斜杠前面的名称部分允许您指定计划名称(类似于 dbserver/dbname),但它每次都会创建一个名为 Default1 的新应用服务计划。您示例中的 -ResourceName "just-an-api/$ResourceName" 的行为与我的测试显示的 -ResourceName "$ResourceName" 相同。斜杠后面的名称部分将被忽略。
    • 有一个-Plan 参数。使用Get-Help New-AzureRmResource -Full
    • @evilSnobu 谢谢你的评论。我确实看到了 Plan 参数,并且描述是它是一个哈希表:“表示资源计划属性的哈希表”。所以这不是一个接受应用服务计划名称的简单字符串,我对如何将应用服务计划表示为哈希表感到困惑。我在网上找不到任何示例来说明如何或何时使用此参数。我认为这不是要使用的正确参数。您知道如何将应用服务计划表示为可以传递给此参数的哈希表吗?感谢您的帮助!
    • 你完全正确。我有点得意忘形,没有测试。是的,它确实是一个哈希表,但 -Plan 不是你需要的(我的错)。 Plan 是一个非常具有误导性的参数名称,它与应用服务计划完全无关。而是在属性包中使用serverFarmId。请参阅我的更新答案。
    【解决方案2】:

    New-AzureRmWebApp 中不支持明确指示是 API 应用程序还是 Web 应用程序的参数。资源提供者仍然是Microsoft.Web。并且ARM模板中没有表示类型的参数。

    这两种类型在技术上仍然以相同的方式工作。区别在于用途、图标、操作系统运行选择和调试能力(请参阅此处What is the difference between an API App and a Web App?)。

    您可能希望通过标记来对这两种类型进行分类,这将有助于在您的资源组有许多 Web 资源的情况下进行管理。

    您可以通过 Azure 门户或 Visual Studio 创建 API 应用程序。

    此外,请查看 Azure API 管理,以获得 API 包装而不是 Azure 应用服务的更大灵活性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-23
      相关资源
      最近更新 更多