C# で Azure.ResourceManager.Compute を使えば、マネージドディスクからスナップショットを作成・取得・更新・削除できた。
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 DiskName = "マネージドディスク名"; const string SnapshotName = "スナップショット名 "; 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 snapshotCollection = resourceGroup.GetSnapshots(); // スナップショットを作成 var createOperation = await snapshotCollection.CreateOrUpdateAsync( waitUntil: WaitUntil.Completed, snapshotName: SnapshotName, data: new SnapshotData(AzureLocation.JapanEast) { CreationData = new DiskCreationData(DiskCreateOption.Copy) { SourceResourceId = ManagedDiskResource.CreateResourceIdentifier( subscriptionId: SubscriptionId, resourceGroupName: ResourceGroupName, diskName: DiskName), }, }); SnapshotResource createdSnapshot = await createOperation.WaitForCompletionAsync(); // スナップショットを列挙 var snapshots = snapshotCollection.GetAllAsync(); await foreach (var snapshot in snapshots) { Console.WriteLine(snapshot.Data.Name); } // スナップショットを更新 var updateOperation = await createdSnapshot.UpdateAsync( waitUntil: WaitUntil.Completed, patch: new SnapshotPatch { Tags = { ["foo"] = "bar", }, }); SnapshotResource updatedSnapshot = await updateOperation.WaitForCompletionAsync(); // スナップショットを削除 await updatedSnapshot.DeleteAsync(WaitUntil.Completed);
SnapshotData や SnapshotPatch にセットする値は、REST API のドキュメントが参考になった。
.NET の例も追加して欲しいところだ。