将 Azure 资源组中的 Public IP 关联到 Web 应用程序?

Associate a Public IP in an Azure Resource Group to a Web App?

我正在研究 Azure 资源组。

我创建了一个组,并在其中创建了一个网络应用程序。 (这都是学术性的,我会在学习完后全部删除,所以我不介意分享数据。)网络应用程序位于http://woodswild.azurewebsites.net,确实你可以去那个地址,它会解决(虽然那里什么都没有,现在没问题。)

然后,在同一个资源组中,我还创建了一个静态的 Public IP 地址。

一切看起来都不错(无论如何我认为)。但是在 Portal UI 中,我看到这个 IP 没有关联到任何东西:

Aaannndd....我很难弄清楚该怎么做。我使用以下命令从 Azure PowerShell 中创建了 Public IP:

New-AzureRmPublicIpAddress -AllocationMethod Static -ResourceGroupName TestRG1 -ReverseFqdn woodswild.centralus.cloudapp.azure.com -Name woodswild.azurewebsites.net -Location "Central US" -DomainNameLabel woodswild

根据解释 New-AzureRmPublicIpAddress 命令的 this article,没有用于声明关联的参数。我在 Portal UI 中找不到执行此操作的方法,而且我无法通过 Google.

找到任何答案

我希望/想知道/假设的是,一旦建立这种关联,您可以将 IP 地址放入浏览器中,它会解析到与 http://woodswild.azurewebsites.net.[=17= 相同的位置]

有什么想法吗?谢谢!!

实际上不可能将静态 IP 地址分配给 Web 应用程序。这是因为 Web 应用程序使用的 IP 地址不是您独占使用的,而是位于 Azure 的 Web 应用程序服务前面的负载均衡器的前端地址池。

但是,Microsoft 断言任何可以分配域名的 Web 应用程序都将在 Web 应用程序的生命周期内保留其外部传入地址和外部传出地址。这适用于基本、标准和高级 SKU。 (它 可能 也适用于 Shared - 我将不得不挖掘文档)

您可以找到您的外部传入 IP 地址(是的,基本上,ping 它并查看 DNS 给出了什么!)

Resolve-DnsName (Get-AzureRmWebApp `
        -ResourceGroupName $ResourceGroupName -Name $Name).EnabledHostNames[0]

以及您的外部传出 IP 地址

(Get-AzureRmWebApp -ResourceGroupName $ResourceGroupName `
                   -Name $Name).OutboundIpAddresses


看来我在这里遇到了第一个障碍,并没有真正阅读这个问题。或者至少我的大脑似乎读到了与那里的不同的词! (我会在这里留下错误的答案,因为 a,它可能对某人有用,b,我可能会把它粘贴到一个适合某天的实际答案中)

之所以如此令人困惑,是因为 Azure 用于更新资源的过程并不是很明显。

对于在 Azure 中进行的大多数现有资源更改,过程类似于

  1. 得到一些东西,把它赋值给一个变量。
  2. 通过分配其他值来更改该变量的 属性。
  3. 使用 Set-something cmdlet 将更改写入 Azure。

在为 VM 分配 IP 地址的情况下,这是要使用的代码

$ipaddr = New-AzureRmPublicIpAddress -Name test1 `
                        -ResourceGroupName win10 `
                        -Location westeurope `
                        -AllocationMethod Static 

$nic = Get-AzureRmNetworkInterface -Name $name `
                        -ResourceGroupName $ResourceGroupName  #1
$nic.IpConfigurations[0].PublicIpAddress = $ipaddr             #2
Set-AzureRmNetworkInterface -NetworkInterface $nic             #3