JavaScript を使用してソース オブジェクト URL から BLOB をコピーする

この記事では、JavaScript 用 Azure Storage クライアント ライブラリを使用してソース オブジェクト URL から BLOB をコピーする方法について説明します。 BLOB は、同じストレージ アカウント内のソースからでも、別のストレージ アカウント内のソースからでも、特定の URL に対する HTTP GET 要求を介して取得されたアクセス可能なオブジェクトからでもコピーできます。

この記事で説明するクライアント ライブラリ メソッドでは、Put Blob From URL および Put Block From URL REST API 操作を使用します。 これらのメソッドは、ストレージ アカウントにデータを移動する必要があり、ソース オブジェクトの URL がわかっているコピー シナリオに適しています。 非同期スケジュールを設定するコピー操作については、「JavaScript を使用して非同期スケジュールを設定して BLOB をコピーする」を参照してください。

前提条件

  • この記事の例では、JavaScript 用の Azure Blob Storage クライアント ライブラリを操作するように設定されたプロジェクトが、既にあることを前提としています。 パッケージのインストール、モジュールのインポート、データ ソースの操作が認可されたクライアント オブジェクトの作成を含むプロジェクトの設定については、「Azure Blob Storage と JavaScript の使用開始」を参照してください。
  • 認可メカニズムには、コピー操作を実行するためのアクセス許可が必要です。 詳細については、次の REST API 操作の認可ガイダンスを参照してください。

ソース オブジェクト URL からの BLOB のコピーについて

Put Blob From URL 操作により、BLOB のコンテンツが特定の URL から読み取られる新しいブロック BLOB が作成されます。 操作は同期的に完了します。

ソースには、指定された URL に対する標準の HTTP GET 要求を介して取得できる任意のオブジェクトを指定できます。 これには、ブロック BLOB、追加 BLOB、ページ BLOB、BLOB スナップショット、BLOB バージョン、または Azure 内外のアクセス可能なオブジェクトが含まれます。

ソース オブジェクトがブロック BLOB の場合、コミットされたすべての BLOB コンテンツがコピーされます。 ただし、ブロック一覧は保持されず、コミットされていないブロックはコピーされません。 コピー先 BLOB のコンテンツはソースのコンテンツと同じですが、コミットされたブロック一覧は保持されません。

コピー先は常にブロック BLOB であり、既存のブロック BLOB でも、操作で作成される新しいブロック BLOB でもかまいません。 既存の BLOB のコンテンツは、新しい BLOB のコンテンツで上書きされます。

Put Blob From URL 操作では、常にソース BLOB 全体がコピーされます。 バイト範囲またはブロックのセットのコピーはサポートされていません。 ソース URL を使用してブロック BLOB のコンテンツに部分的な更新を実行するには、Put Block List と共に Put Block From URL API を使用します。

BLOB サイズの制限事項や課金に関する考慮事項など Put Blob From URL 操作の詳細については、URL リマークからの BLOB の配置に関するページを参照してください。

ソース オブジェクト URL から BLOB をコピーする

このセクションでは、ソース オブジェクト URL からコピー操作を実行するために、JavaScript 用の Azure Storage クライアント ライブラリによって提供されるメソッドの概要について説明します。

次のメソッドは、Put Blob From URL REST API 操作をラップし、BLOB のコンテンツが特定の URL から読み取られる新しいブロック BLOB を作成します。

これらのメソッドは、ストレージ アカウントにデータを移動する必要があり、ソース オブジェクトの URL がわかっているシナリオに適しています。

大きなオブジェクトの場合は、個々のブロックを操作することもできます。 次のメソッドは、Put Block From URL REST API 操作をラップします。 次のメソッドでは、コンテンツがソース URL から読み取られる BLOB の一部としてコミットされる新しいブロックが作成されます。

Azure 内のソースから BLOB をコピーする

Azure 内のソースから BLOB をコピーする場合、ソース BLOB へのアクセスは、Microsoft Entra ID、共有アクセス署名 (SAS)、またはアカウント キーを使って承認できます。

次の例は、Azure 内でソース BLOB からコピーするシナリオを示しています。

async function copyFromSourceInAzure(sourceBlob, destinationBlob) {
  // Get the source blob URL and create the destination blob
  await destinationBlob.syncUploadFromURL(sourceBlob.url);
}

syncUploadFromURL メソッドは、BlockBlobSyncUploadFromURLOptions パラメーターを受け入れて、操作のその他のオプションを指定することもできます。

Azure 外部のソースから BLOB をコピーする

Azure 外部にあるアクセス可能なオブジェクトを含め、特定の URL に対する HTTP GET 要求を介して取得できる任意のソース オブジェクトにコピー操作を実行できます。 次の例は、アクセス可能なソース オブジェクト URL から BLOB をコピーするシナリオを示しています。

async function copyFromExternalSource(sourceUrl, destinationBlob) {
  // Create the destination blob from the source URL
  await destinationBlob.syncUploadFromURL(sourceUrl);
}

リソース

JavaScript 用 Azure Blob Storage クライアント ライブラリを使用した BLOB のコピーについて詳しくは、次のリソースを参照してください。

REST API の操作

Azure SDK for JavaScript には Azure REST API に基づいて構築されたライブラリが含まれるため、使い慣れた JavaScript パラダイムを通じて REST API 操作を利用できます。 このアーティクルで説明するクライアント ライブラリ メソッドでは、次の REST API 操作を使用します:

コード サンプル

クライアント ライブラリのリソース