我正在寻找一种使用Java SDK在区域之间复制Azure管理磁盘快照的方法。任何建议或指示都会有所帮助
预先感谢 普拉萨德
答案 0 :(得分:0)
您可以使用Java SDK创建具有不同资源组和区域的Azure托管磁盘快照:
Disk osDisk = azure.disks().getById(linuxVM.osDiskId());
Snapshot osSnapshot = azure.snapshots().define(managedOSSnapshotName)
.withRegion(Region.US_EAST)
.withExistingResourceGroup(rgName)
.withLinuxFromDisk(osDisk)
.create();
有关详情,请参见Java: Manage Azure Managed Disks。
Update-1
如果要从其他区域复制快照,只需将withLinuxFromDisk()
更改为withLinuxFromSnapshot()
。
您可以从Java SDK for Azure获得有关Java SDK中Azure快照的更多界面。
Update-2
对于要从快照创建快照的问题。使用下面的代码示例,它可以很好地工作。
import com.microsoft.azure.management.Azure;
import com.microsoft.azure.credentials.ApplicationTokenCredentials;
import com.microsoft.azure.AzureEnvironment;
import com.microsoft.azure.management.compute.Snapshot;
import com.microsoft.azure.management.resources.fluentcore.arm.Region;
import java.io.IOException;
public class test {
public static void main(String[] args) throws IOException {
ApplicationTokenCredentials credentials = new ApplicationTokenCredentials(
"xxxxxxxxx",
"xxxxxxxxx",
"xxxxxxxxx",
AzureEnvironment.AZURE);
Azure.Authenticated azureAuth = Azure.authenticate(credentials);
Azure azure = azureAuth.withDefaultSubscription();
Snapshot osSnapshot = azure.snapshots().define("managedOSSnapshotName")
.withRegion(Region.US_EAST)
.withExistingResourceGroup("charlesJava")
.withDataFromSnapshot("/subscriptions/xxxxxxx/resourceGroups/groupName/providers/Microsoft.Compute/snapshots/snapshottest")
.create();
}
}
.withDataFromSnapshot()
是资源ID的参数,换句话说,它是快照资源ID。但首先,您应该至少要有“参与者”权限才能获得要使用的资源组的身份验证。对于此步骤,您可以创建服务主体并为快照所在的资源组添加角色。