Azure Storage Data Movement Library プレビューの概要

このポストは、9 月 23 日に投稿された Introducing Azure Storage Data Movement Library Preview の翻訳です。

 

AzCopy をリリースして以来、多くのお客様から AzCopy のプログラムにアクセスできるようにしてほしいとご要望が寄せられていました。このご要望を受けて、このたび、オープン ソースの Azure Storage Data Movement Library (DML) for .NET のリリースを発表しました。このライブラリは、AzCopy で使用している主要なデータ移行フレームワークを基盤としており、信頼性の高い高パフォーマンスな Azure Storage のデータ転送操作を簡単に行うことができます。これにより、次のようなシナリオに対応できるようになりました。

  • Microsoft Azure の BLOB とファイル ストレージ間でのデータのアップロード、ダウンロード、コピー
  • AWS S3 などのサードパーティ クラウド プロバイダーから Azure Blob Storage へのデータの移行
  • Azure Storage のデータのバックアップ

以下は、BLOB のアップロードに使用するコードのサンプルです (その他のサンプルは、GitHub (英語) を参照してください)。

 using System;
using System.Threading;
using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Blob;
// 新しい Azure Storage Data Movement Library を追加します
using Microsoft.WindowsAzure.Storage.DataMovement;

// ストレージのコンテキストを設定し、アップロードするオブジェクトを準備します
string storageConnectionString = "myStorageConnectionString";
CloudStorageAccount account = CloudStorageAccount.Parse(storageConnectionString);
CloudBlobClient blobClient = account.CreateCloudBlobClient();
CloudBlobContainer blobContainer = blobClient.GetContainerReference("mycontainer");
blobContainer.CreateIfNotExists();
string sourcePath = "path\\to\\test.txt";
CloudBlockBlob destBlob = blobContainer.GetBlockBlobReference("myblob");


// 新しい Azure Storage Data Movement Library のインターフェイスを使用して BLOB をアップロードします
// 同時に実行する操作の数を設定します
TransferManager.Configurations.ParallelOperations = 64;

// 転送のコンテキストを設定し、アップロード処理の進捗状況を追跡します
TransferContext context = new TransferContext();
context.ProgressHandler = new Progress<TransferProgress>((progress) =>
{
    Console.WriteLine("Bytes uploaded: {0}", progress.BytesTransferred);
});

// ローカル BLOB をアップロードします
var task = TransferManager.UploadAsync(
    sourcePath, destBlob, null, context, CancellationToken.None);
task.Wait();

Azure Storage Data Movement Library のパフォーマンスや主な機能は AzCopy と同じです。このライブラリの初回プレビューは NuGet (英語) からインストールできます。また、ソース コードは GitHub (英語) からダウンロードできます。このライブラリの初期バージョン (0.1.0) では以下の機能が提供されます。

  • Azure Storage 抽象化のデータ転送のサポート: BLOB
  • Azure Storage 抽象化のデータ転送のサポート: ファイル
  • 単一オブジェクトのダウンロード、アップロード、コピー
  • 同時に実行する操作の数の制御
  • 同期および非同期コピー
  • 同時に実行する操作の数の定義
  • ユーザー エージェントのサフィックスの定義
  • コンテンツ タイプの設定
  • アクセス条件の設定。これにより、特定の日付以降に変更されたオブジェクトをコピーするなど、条件を指定してオブジェクトをコピーできます。
  • コンテンツの MD5 の検証
  • 特定の BLOB のスナップショットをダウンロード
  • 転送処理の進捗状況の追跡: 転送済みのバイト数、正常に転送されたファイル数、転送に失敗したファイル数、スキップされたファイル数
  • 復旧 (転送チェックポイントの設定/取得)
  • 転送エラー処理 (転送の例外とエラー コード)
  • クライアント側のログの記録

DML はオープン ソースのプロジェクトです。コミュニティの皆様のご参加を心よりお待ちしております。皆様のご協力のもとで既存のサンプルを拡張し、さらに堅牢なものを実現していきたいと考えております。バージョン 0.1.0 のリリースに伴い、以下のサンプルを作成しました。詳細については、GitHub の Readme.md (英語) をご覧ください。

次のステップ

マイクロソフトは、引き続き AzCopy と Data Movement Library の強化に取り組んでまいります。今後の Data Movement Library のリリースでは、以下のようなより高度な機能のサポートが追加される予定です。

  • ディレクトリ (ローカル ファイル ディレクトリ、BLOB 仮想ディレクトリ、ファイル共有ディレクトリ) のダウンロード、アップロード、コピー
  • 再帰モードまたはフラット モードでのディレクトリの転送
  • ファイルやディレクトリをコピーする際のファイル パターンの指定
  • ディレクトリに含まれるスナップショットのダウンロード

いつものお願いではありますが、皆様からのフィードバックをお待ちしています。