Microsoft Azure Java SDK:快照副本

时间:2018-10-05 10:40:24

标签: azure azure-storage

我正在寻找一种使用Java SDK在区域之间复制Azure管理磁盘快照的方法。任何建议或指示都会有所帮助

预先感谢 普拉萨德

1 个答案:

答案 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。但首先,您应该至少要有“参与者”权限才​​能获得要使用的资源组的身份验证。对于此步骤,您可以创建服务主体并为快照所在的资源组添加角色。