/n software Cloud Storage Integrator の使用方法: Azure Blob

はじめに

/n software の Cloud Storage Integrator は、Amazon S3 や Google Drive、Dropbox、Box.com、OneDrive などのクラウド ストレージ サービスにアクセスできる、使い勝手のよいコンポーネントを提供します。

このツールキットは、個々のサービスごとのコンポーネントと、複数のサービスにアクセスできる、統一された API を備えた  CloudStorage  コンポーネントから成っています。

Cloud Storage Integrator ではまた、クラウドに保存されるデータを保護するため、強力な暗号化サポートも提供しています。

前回の Amazon S3 コンポーネントに続き、今回は Microsoft の提供する、あらゆるデータの形式を意識することなく保存し、一般に公開したり公開せずに利用したりできるストレージ サービス、Azure BLOB 専用コンポーネント の使用方法について説明します。

Azure BLOB

BLOB コンポーネントは、テキストやバイナリ データを格納できる Microsoft Azure BLOB サービスにアクセスするための、使い勝手のよいインターフェイスを提供します。BLOB サービスには、ストレージ アカウント、コンテナー、BLOB の 3 つのリソースがあります。ストレージ アカウントで、コンテナーを使って BLOB を管理します。

BLOB コンポーネントでは、ブロック BLOB が作成、管理、削除できます。ブロック BLOB はストリーミングに最適化されており、ファイルなどの大容量のデータを格納できます。

まず、Azure Storage サービスにサインアップします。このプロセスについては、Microsoft Azure のドキュメントを参照してください。

認証

認証は、Microsoft Azure の提供する  Account および  AccessKey を使って行われます。

Account および AccessKey を使った例

blob = new Azureblob();
blob.Account = BLOB_ACCOUNT;
blob.AccessKey = BLOB_ACCESS_KEY;

コンテナーの管理

 ListContainers  メソッドは、アカウントに属するすべてのコンテナーを返します。 Prefix  を使うと、このメソッドによって取得したコンテナーをフィルタリングできます。

呼び出し結果が、 MaxResults  を超える場合には、 Marker  フィールドが読み込まれ、結果の位置を特定します。続いて  ListContainers  を呼び出すと、結果の続きが返されます。結果のリストが最後に達すると、 Marker  が空の文字列を表示します。
上記の呼び出しにより、以下のフィールドのデータが読み込まれます。

  •  Name 
  •  ETag 
  •  LastModified 
  •  URL 

ListContainers を使った例

blob.ListContainers();
for (int i = 0; i < blob.Containers.Count; i++) {
Console.WriteLine(blob.Containers[i].Name);
Console.WriteLine(blob.Containers[i].LastModified);
Console.WriteLine(blob.Containers[i].URL);
}

BLOB コンポーネントでは、 DeleteContainer  メソッドを呼び出すことによってコンテナーを削除でき、また CreateContainer  メソッドを呼び出して新規のコンテナーを作成できます。
さらに、以下のコンテナー管理機能も含まれています。

  •  GetContainerACL / SetContainerACL  では、コンテナーのアクセス ポリシーを更新できます。
  •  GetContainerMetadata / SetContainerMetadata  を使って、コンテナーのメタデータを操作します。

BLOB の管理

 ListBlobs  メソッドは、 ContainerName  によって指定したコンテナー内の BLOB を取得します。 Prefix  および  BlobDelimiter  を使うと、このメソッドで取得した
BLOB をフィルタリングできます。呼び出し結果が  MaxResults  を超える場合には、 Marker  フィールドが読み込まれ、結果の位置を特定します。続いて  ListBlobs  を呼び出すと、結果の続きが返されます。結果のリストが最後に達すると、 Marker 
が空の文字列を表示します。
上記の呼び出しにより、以下のフィールドのデータが読み込まれます。

  •  Name 
  •  ETag 
  •  LastModified 
  •  URL 
  •  BlobType 
  •  LeaseStatus 
  •  CacheControl 
  •  ContentEncoding 
  •  ContentLanguage 
  •  ContentLength 
  •  ContentMD5 

ListBlobs を使った例

blob.ContainerName = "TEST_CONTAINER";
blob.ListBlobs();
for (int i = 0; i < blob.Blobs.Count; i++) {
  Console.WriteLine(blob.Blobs[i].Name);
  Console.WriteLine(blob.Blobs[i].LastModified);
  Console.WriteLine(blob.Blobs[i].ContentLength);
}

Blob コンポーネントでは、 DeleteBlob メソッド を呼び出すことによって BLOB を削除でき、また CreateBlob メソッドを呼び出して新規のオブジェクトを作成できます。
希望の BLOB を取得するには、 GetBlob  を呼び出します。これにより、 LocalFileプロパティで指定されたファイルに BLOB が格納されますが、空の文字列の場合には、 BlobData  に格納されます。
この他にも、オブジェクトの管理に関する以下の機能があります。

  • CopyBlob  を使ってストレージ アカウント内でソース BLOB をターゲットの BLOB にコピー。
  • GetBlobMetadata / SetBlobMetadata  で BLOB のメタデータを操作。
  • LeaseBlob  による BLOB リース操作。

ブロックの管理

 ListBlocks  メソッドは、 BlobName  パラメーターによって特定された BLOB の一部としてアップロードされた BLOB のフィルターとして使用できます。
BLOB のために維持されるブロックのリストには、Committed および Uncommitted の 2 種類があります。Committed ブロック リストには、 PutBlockList  メソッドを使用して正常にコミットされたブロックのリストが含まれます。Uncommitted ブロック リストには、 CreateBlock  メソッドを使用してアップロードされたが、コミットはされていないブロックのリストが含まれます。
 BlockListType  パラメーターは、返さなければならないリストの特定を許可します。以下は、可能性のある値です。

  • 0 – コミットされたブロック リストのみを取得。
  • 1 – コミットされていないブロック リストのみを取得。
  • 2 – コミットされたブロック リストおよびコミットされていないブロック リスト両方を取得。

上記の呼び出しにより、以下のフィールドのデータが読み込まれます。

  •  BlockType 
  •  Id 
  •  Size 

ListBlocks を使った例

blob.ListBlocks("BLOB_NAME", 2);
for (int i = 0; i < blob.Blobs.Count; i++) {
  Console.WriteLine(blob.Blobs[i].BlockType);
  Console.WriteLine(blob.Blobs[i].Id);
  Console.WriteLine(blob.Blobs[i].Size);
}

BLOB コンポーネントでは、 CreateBlock  メソッドを呼び出して、新規のブロックを作成することができます。 AddBlock  メソッドは、BLOB の形成を目的として、コミットされるブロックのリストにブロックを追加するために使用されます。 PutBlockList  メソッドは、BLOB の作成またはアップデートを目的として、現在のブロック リストをコミットするために使用されます。

その他の機能

BLOB コンポーネントは、この他にも以下のような高度な機能を提供しています。

  •  GetLink を実行して BLOB へのアクセス リンクを作成。
  •  CreateSnapshot  を実行してBLOB のスナップショットを作成
  • その他

/n software 製品の詳細は、こちら をご覧ください。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする