C# で Azure.ResourceManager.Compute を使って、スナップショットからマネージドディスクを作成できた。あと列挙・更新・削除も。
以下、.NET 6 でのサンプル。
using Azure; using Azure.Core; using Azure.Identity; using Azure.ResourceManager; using Azure.ResourceManager.Compute; using Azure.ResourceManager.Compute.Models; using Azure.ResourceManager.Resources; const string ClientId = "クライアントID"; const string ClientSecret = "クライアントシークレット"; const string TenantId = "テナントID"; const string SubscriptionId = "サブスクリプションID"; const string ResourceGroupName = "リソースグループ名"; const string SnapshotName = "スナップショット名"; const string DiskName = "マネージドディスク名"; var credential = new ClientSecretCredential( tenantId: TenantId, clientId: ClientId, clientSecret: ClientSecret); var client = new ArmClient(credential); ResourceGroupResource resourceGroup = await client.GetSubscriptionResource( SubscriptionResource.CreateResourceIdentifier(SubscriptionId)) .GetResourceGroupAsync(ResourceGroupName); var diskCollection = resourceGroup.GetManagedDisks(); // スナップショットからマネージドディスクを作成 var createOperation = await diskCollection.CreateOrUpdateAsync( waitUntil: WaitUntil.Completed, diskName: DiskName, data: new ManagedDiskData(AzureLocation.JapanEast) { CreationData = new DiskCreationData(DiskCreateOption.Copy) { SourceResourceId = SnapshotResource.CreateResourceIdentifier( subscriptionId: SubscriptionId, resourceGroupName: ResourceGroupName, snapshotName: SnapshotName), }, }); ManagedDiskResource createdDisk = await createOperation.WaitForCompletionAsync(); // マネージドディスクを列挙 var disks = diskCollection.GetAllAsync(); await foreach (var disk in disks) { Console.WriteLine(disk.Data.Name); } // マネージドディスクを更新 var updateOperation = await createdDisk.UpdateAsync( waitUntil: WaitUntil.Completed, patch: new ManagedDiskPatch { Tags = { ["foo"] = "bar", }, }); ManagedDiskResource updatedDisk = await updateOperation.WaitForCompletionAsync(); // マネージドディスクを削除 await updatedDisk.DeleteAsync(WaitUntil.Completed);