JavaScript バージョン 11.x クライアント ライブラリを使用する Azure Blob Storage のコード サンプル
この記事では、JavaScript 用の Azure Blob Storage クライアント ライブラリのバージョン 11.x を使用するコード サンプルを示します。
2023 年 3 月 31 日に、現在の Azure SDK ガイドラインに準拠していない Azure SDK ライブラリのサポートは廃止されました。 新しい Azure SDK ライブラリは、一貫したエクスペリエンスを促進し、セキュリティ態勢を強化するために定期的に更新されます。 新しい機能と重要なセキュリティ更新を利用するために、新しい Azure SDK ライブラリに移行することをお勧めします。
以前のライブラリは 2023 年 3 月 31 日以降も引き続き使用できますが、Microsoft から公式のサポートと更新情報は提供されなくなります。 詳細については、サポート廃止のお知らせに関するページを参照してください。
Blob Storage を使用して高可用性アプリを作成する
サンプル プロジェクトをダウンロードして、ファイルを解凍します。 git を使って、アプリケーションのコピーを開発環境にダウンロードすることもできます。 サンプル プロジェクトには基本的な Node.js アプリケーションが含まれています。
git clone https://github.com/Azure-Samples/storage-node-v10-ha-ra-grs.git
サンプルの構成
このサンプルを実行するには、実際のストレージ アカウントの資格情報を .env.example
ファイルに追加し、その名前を .env
に変更する必要があります。
AZURE_STORAGE_ACCOUNT_NAME=<replace with your storage account name>
AZURE_STORAGE_ACCOUNT_ACCESS_KEY=<replace with your storage account access key>
この情報は、Azure portal で目的のストレージ アカウントに移動し、 [設定] セクションの [アクセス キー] を選択すると確認できます。
コマンド プロンプトを開き、サンプル フォルダーに移動し、「npm install
」と入力して、必要な依存関係をインストールします。
コンソール アプリケーションを実行する
サンプルを実行するには、コマンド プロンプトを開いてサンプル フォルダーに移動し、「node index.js
」と入力します。
BLOB ストレージ アカウントにコンテナーが作成されて、そこに HelloWorld.png がアップロードされ、コンテナーとイメージがセカンダリ リージョンにレプリケートされたかどうかが繰り返しチェックされます。 レプリケーション後、「D」(ダウンロードする場合) または「Q」(終了する場合) と入力して Enter キーを押すように求められます。 出力は次の例のようになります。
Created container successfully: newcontainer1550799840726
Uploaded blob: HelloWorld.png
Checking to see if container and blob have replicated to secondary region.
[0] Container has not replicated to secondary region yet: newcontainer1550799840726 : ContainerNotFound
[1] Container has not replicated to secondary region yet: newcontainer1550799840726 : ContainerNotFound
...
[31] Container has not replicated to secondary region yet: newcontainer1550799840726 : ContainerNotFound
[32] Container found, but blob has not replicated to secondary region yet.
...
[67] Container found, but blob has not replicated to secondary region yet.
[68] Blob has replicated to secondary region.
Ready for blob download. Enter (D) to download or (Q) to quit, followed by ENTER.
> D
Attempting to download blob...
Blob downloaded from primary endpoint.
> Q
Exiting...
Deleted container newcontainer1550799840726
コード サンプルを理解する
Node.js V10 SDK では、コールバック ハンドラーは不要です。 代わりにこのサンプルでは、再試行オプションとセカンダリ エンドポイントを含むパイプラインを作成しています。 この構成により、アプリケーションは、プライマリ パイプラインで必要なデータに到達できなかった場合でも、自動的にセカンダリ パイプラインに切り替えることができます。
const accountName = process.env.AZURE_STORAGE_ACCOUNT_NAME;
const storageAccessKey = process.env.AZURE_STORAGE_ACCOUNT_ACCESS_KEY;
const sharedKeyCredential = new SharedKeyCredential(accountName, storageAccessKey);
const primaryAccountURL = `https://${accountName}.blob.core.windows.net`;
const secondaryAccountURL = `https://${accountName}-secondary.blob.core.windows.net`;
const pipeline = StorageURL.newPipeline(sharedKeyCredential, {
retryOptions: {
maxTries: 3,
tryTimeoutInMs: 10000,
retryDelayInMs: 500,
maxRetryDelayInMs: 1000,
secondaryHost: secondaryAccountURL
}
});