-1

Я хочу скопировать мое существующее пользовательское изображение из учетной записи хранения Azure classic в учетную запись хранилища Azure ARM с помощью Java. (Внедрение azCopy с использованием программирования Java)Как скопировать изображение с учетной записи хранилища Azure на учетную запись хранилища ARM с помощью Java?

ответ

0

Это звучит, как вы хотите реализовать azCopy Командлет ниже с помощью программирования Java.

Blob: Copy single blob across Storage accounts

AzCopy/Источник: https://sourceaccount.blob.core.windows.net/mycontainer1/Dest: https://destaccount.blob.core.windows.net/mycontainer2/SourceKey: key1/DestKey: key2 /Pattern:abc.txt

Как ссылки, вот мой кода для реализации вышеописанного командлета с использованием программирования Java, которые зависят от Azure Storage Client SDK for Java.

Ключевым методом копирования является CloudBlob.startCopy.

import java.net.URI; 
import java.net.URISyntaxException; 
import java.security.InvalidKeyException; 
import java.util.HashMap; 
import java.util.Map; 

import com.microsoft.azure.storage.StorageCredentials; 
import com.microsoft.azure.storage.StorageException; 
import com.microsoft.azure.storage.StorageUri; 
import com.microsoft.azure.storage.blob.CloudBlob; 
import com.microsoft.azure.storage.blob.CloudBlockBlob; 

public class AzCopySample { 

    private static final String STORAGE_CONNECTION_STRING_TEMPLATE = "DefaultEndpointsProtocol=https;AccountName=%s;AccountKey=%s;"; 

    public static CloudBlob genBlobReference(Map<String, String> cmdOptions, String option) throws URISyntaxException, InvalidKeyException, StorageException { 
     URI uri = new URI(cmdOptions.get(option)); 
     String host = uri.getHost(); 
     String account = host.substring(0, host.indexOf(".")); 
     String key = cmdOptions.get(option+"Key"); 
     String connectionString = String.format(STORAGE_CONNECTION_STRING_TEMPLATE, account, key); 
     StorageCredentials credentials = StorageCredentials.tryParseCredentials(connectionString); 
     StorageUri storageUri = new StorageUri(uri); 
     CloudBlob blob = new CloudBlockBlob(storageUri, credentials); 
     return blob; 
    } 

    public static void main(String[] args) throws URISyntaxException, InvalidKeyException, StorageException { 
     String command = "AzCopy /Source:https://sourceaccount.blob.core.windows.net/mycontainer1 /Dest:https://destaccount.blob.core.windows.net/mycontainer2 /SourceKey:key1 /DestKey:key2 /Pattern:abc.txt"; 
     String[] cmdItems = command.split(" "); 
     Map<String, String> cmdOptions = new HashMap<>(); 
     for(int i = 1; i < cmdItems.length; i++) { 
      String cmdItem = cmdItems[i]; 
      int index = cmdItem.indexOf(":"); 
      String key = cmdItem.substring(0, index); 
      String value = cmdItem.substring(index+1); 
      cmdOptions.put(key, value); 
     } 
     CloudBlob source = genBlobReference(cmdOptions, "/Source"); 
     CloudBlob dest = genBlobReference(cmdOptions, "/Dest"); 
     dest.startCopy(source.getUri()); 
    } 

} 
+0

Привет, Питер, Большое спасибо за помощь. Но я борюсь с ошибкой «Исключение в потоке» main »com.microsoft.azure.storage.StorageException: серверу не удалось аутентифицировать запрос. Убедитесь, что значение заголовка авторизации сформировано правильно, включая подпись." Вы можете мне помочь ? – CodeFunda

+0

Else дайте мне код для копирования изображения из классического хранилища в хранилище ARM .... – CodeFunda

 Смежные вопросы

  • Нет связанных вопросов^_^