.NET 用 Azure Storage Data Movement Common クライアント ライブラリ - バージョン 12.0.0-beta.3

サーバー バージョン: 2021-02-12、2020-12-06、2020-10-02、 2020-08-04、2020-06-12、2020-04-08、2020-02-10、2019-12-12、2019-07-07、および 2020-02-02

Azure Storage は、高い可用性とセキュリティ、耐久性、スケーラビリティ、冗長性を備えたクラウド ストレージを提供する、Microsoft が管理するクラウド サービスです。

Azure Storage データ移動ライブラリは、顧客データのアップロード、ダウンロード、コピー用に最適化されています。

現在、このバージョンのデータ移動ライブラリでは BLOB のみがサポートされています。

ソースコード | API リファレンス ドキュメント | REST API のドキュメント | 製品ドキュメント

作業の開始

パッケージをインストールする

NuGet で使用する .NET 用 Azure Storage クライアント ライブラリをインストールすると、Azure.Storage.DataMovementクライアント ライブラリが含まれます。

dotnet add package Azure.Storage.DataMovement --prerelease

前提条件

このパッケージを使用するには、 Azure サブスクリプションストレージ アカウント が必要です。

新しいストレージ アカウントを作成するには、Azure PortalAzure PowerShell、または Azure CLI を使用できます。 Azure CLI を使う例を次に示します。

az storage account create --name MyStorageAccount --resource-group MyResourceGroup --location westus --sku Standard_LRS

クライアントを認証する

データ移動ライブラリを操作するには、TransferManager クラスを使用してインスタンスを作成する必要があります。

TransferManager のインスタンスを作成する

TransferManager transferManager = new TransferManager(new TransferManagerOptions());

オプションを使用して TransferManager のインスタンスを作成する

// Create BlobTransferManager with event handler in Options bag
TransferManagerOptions transferManagerOptions = new TransferManagerOptions();
TransferOptions options = new TransferOptions()
{
    MaximumTransferChunkSize = 4 * Constants.MB,
    CreateMode = StorageResourceCreateMode.Overwrite,
};
TransferManager transferManager = new TransferManager(transferManagerOptions);

主要な概念

Azure Storage Common クライアント ライブラリには、 認証資格情報RequestFailedException などの共有インフラストラクチャが含まれています。

スレッド セーフ

すべてのクライアント インスタンス メソッドがスレッド セーフであり、相互に独立していることを保証します (ガイドライン)。 これにより、クライアント インスタンスの再利用に関する推奨事項は、スレッド間でも常に安全になります。

その他の概念

クライアント オプション | 応答 | へのアクセス実行時間の長い操作 | エラーの | 処理診断 | あざける | クライアントの有効期間

BLOB DataMovement の例を参照してください。

それぞれの DataTransfer オブジェクトを使用して TransferManager を使用して転送を一時停止する

DataTransfer dataTransfer = await transferManager.StartTransferAsync(
    sourceResource: sourceResource,
    destinationResource: destinationResource);

// Pause from the Transfer Manager using the DataTransfer object
await transferManager.PauseTransferIfRunningAsync(dataTransfer);

それぞれの転送 ID を使用して TransferManager を使用して転送を一時停止する

DataTransfer dataTransfer = await transferManager.StartTransferAsync(
    sourceResource: sourceResource,
    destinationResource: destinationResource);
string transferId = dataTransfer.Id;

// Pause from the Transfer Manager using the Transfer Id
await transferManager.PauseTransferIfRunningAsync(transferId);

それぞれの DataTransfer を使用して転送を一時停止する

DataTransfer dataTransfer = await transferManager.StartTransferAsync(
    sourceResource: sourceResource,
    destinationResource: destinationResource);

// Pause from the DataTransfer object
await dataTransfer.PauseIfRunningAsync();

転送を再開する

async Task<(StorageResource Source, StorageResource Destination)> MakeResourcesAsync(DataTransferProperties info)
{
    StorageResource sourceResource = null, destinationResource = null;
    if (BlobStorageResources.TryGetResourceProviders(
        info,
        out BlobStorageResourceProvider blobSrcProvider,
        out BlobStorageResourceProvider blobDstProvider))
    {
        sourceResource ??= await blobSrcProvider.MakeResourceAsync(GetMyCredential(info.SourcePath));
        destinationResource ??= await blobSrcProvider.MakeResourceAsync(GetMyCredential(info.DestinationPath));
    }
    if (LocalStorageResources.TryGetResourceProviders(
        info,
        out LocalStorageResourceProvider localSrcProvider,
        out LocalStorageResourceProvider localDstProvider))
    {
        sourceResource ??= localSrcProvider.MakeResource();
        destinationResource ??= localDstProvider.MakeResource();
    }
    return (sourceResource, destinationResource);
}
List<DataTransfer> resumedTransfers = new();
await foreach (DataTransferProperties transferProperties in transferManager.GetResumableTransfersAsync())
{
    (StorageResource resumeSource, StorageResource resumeDestination) = await MakeResourcesAsync(transferProperties);
    resumedTransfers.Add(await transferManager.ResumeTransferAsync(transferProperties.TransferId, resumeSource, resumeDestination));
}

トラブルシューティング

すべての Azure Storage サービスは、役に立つ と共に RequestFailedException をスローします。ErrorCode

次のステップ

Blob DataMovement サンプルの概要。

共同作成

これらのライブラリの構築、テスト、および貢献の詳細については、「 Storage CONTRIBUTING.md 」を参照してください。

このプロジェクトでは、共同作成と提案を歓迎しています。 ほとんどの共同作成では、共同作成者使用許諾契約書 (CLA) にご同意いただき、ご自身の共同作成内容を使用する権利を Microsoft に供与する権利をお持ちであり、かつ実際に供与することを宣言していただく必要があります。 詳細については、「 cla.microsoft.com」を参照してください。

このプロジェクトでは、Microsoft オープン ソースの倫理規定を採用しています。 詳しくは、「Code of Conduct FAQ (倫理規定についてよくある質問)」を参照するか、opencode@microsoft.com 宛てに質問またはコメントをお送りください。

インプレッション数