答えて

0

あなたは、Javaプログラミングを使用して、以下のazCopyコマンドレットを実装するように聞こえます。

ブロブ: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

は、ここに私がいますAzure Storage Client SDK for Javaに依存する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

こんにちはPeter、ありがとうございました。しかし、私は "スレッドの例外"メイン "com.microsoft.azure.storage.StorageException:サーバーが要求を認証するのに失敗しましたエラーを苦労しています。Authorizationヘッダーの値が署名を含めて正しく形成されていることを確認してください。手伝って頂けますか ? – CodeFunda

+0

これ以上の古典的なストレージからARMストレージにイメージをコピーするコードを私に与える.... – CodeFunda

関連する問題