C# で Microsoft Azure のパブリックIPアドレスを作成する

Azure.ResourceManager.Network パッケージを使う。

www.nuget.org

パブリック IP アドレスが無ければ作成するサンプル。

using Azure;
using Azure.Core;
using Azure.Identity;
using Azure.ResourceManager;
using Azure.ResourceManager.Network;
using Azure.ResourceManager.Network.Models;
using Azure.ResourceManager.Resources;

var armClient = new ArmClient(new DefaultAzureCredential());
var subscription = await armClient.GetDefaultSubscriptionAsync();

// リソースグループが無ければ作成
const string resourceGroupName = "rg-ipaddress-test";
var resourceGroups = subscription.GetResourceGroups();
ResourceGroupResource resourceGroup;
if (await resourceGroups.ExistsAsync(resourceGroupName))
{
    resourceGroup = await resourceGroups.GetAsync(resourceGroupName);
}
else
{
    var resourceGroupOperation = await resourceGroups.CreateOrUpdateAsync(
        waitUntil: WaitUntil.Completed,
        resourceGroupName: resourceGroupName,
        data: new ResourceGroupData(AzureLocation.JapanEast));
    resourceGroup = await resourceGroupOperation.WaitForCompletionAsync();
}


// IP アドレスが無ければ作成
const string publicIPAddressName = "pip-ipaddress-test";
var publicIPAddresses = resourceGroup.GetPublicIPAddresses();
PublicIPAddressResource publicIPAddress;
if (await publicIPAddresses.ExistsAsync(publicIPAddressName))
{
    publicIPAddress = await publicIPAddresses.GetAsync(publicIPAddressName);
}
else
{
    var publicIPAddressOperation = await publicIPAddresses.CreateOrUpdateAsync(
        waitUntil: WaitUntil.Completed,
        publicIPAddressName: publicIPAddressName,
        data: new PublicIPAddressData
        {
            Location = AzureLocation.JapanEast,
            Sku = new PublicIPAddressSku
            {
                Name = PublicIPAddressSkuName.Standard,
                Tier = PublicIPAddressSkuTier.Regional,
            },
            PublicIPAddressVersion = NetworkIPVersion.IPv4,
            PublicIPAllocationMethod = NetworkIPAllocationMethod.Static,
        });
    publicIPAddress = await publicIPAddressOperation.WaitForCompletionAsync();
}

Console.WriteLine($"{publicIPAddress.Data.Name}:{publicIPAddress.Data.IPAddress}");
Console.ReadLine();