はじめに
/n software の Cloud Storage Integrator は、Amazon S3 や Google Drive、Dropbox、Box.com、OneDrive などのクラウド ストレージ サービスにアクセスできる、使い勝手のよいコンポーネントを提供します。
このツールキットは、個々のサービスごとのコンポーネントと、複数のサービスにアクセスできる、統一された API を備えた CloudStorage コンポーネントから成っています。
Cloud Storage Integrator ではまた、クラウドに保存されるデータを保護するため、強力な暗号化サポートも提供しています。
Amazon Glacier
AmazonGlacier コンポーネントを使うと、Glacier のサービスに容易にアクセスでき、ボールトやアーカイブの作成、格納、管理が可能となります。ジョブやアーカイブ、ボールトの管理に加え、強力な暗号化サポートを提供します。
まず、Amazon AWS のアカウントを開設し、Glacier サービスにサインアップします。このプロセスについては、Amazon Glacier のドキュメントを参照してください。
認証
認証は、Amazon Glacier の提供する AccessKey および SecretKey を使って行われます。
AccessKey および SecretKey を使った例
[csharp light=”true”]glacier = new Glacier();
glacier.AccessKey = GLACIER_ACCESS_KEY;
glacier.SecretKey = GLACIER_SECRET_KEY;[/csharp]
ボールトの管理
AmazonGlacier コンポーネントを使うと、ボールトを作成、削除し、またそのリストを取得できます。
ListVaults メソッドは、アカウントに属するすべてのボールトを返します。デフォルトの上限は1,000 ボールトですが、 MaxListVaultResults パラメーターを設定することにより調節できます。呼び出し結果のボールトの数値が上限値を超える場合には、結果はページ分割されます。 IsVaultPaged の設定が True となり、 VaultMarker フィールドが読み込まれます。すべての結果を取得するには、 IsVaultPaged が False を返し、 VaultMarker が空の文字列となるまで ListVaults を再度呼び出します。
GetVaultInfo メソッドは、 VaultName によって指定された単一のボールトの情報を取得します。
これらの呼び出しはいずれも以下のフィールドのデータを読み込みます。
ArchiveCountArnCreationDateLastInventoryDateNameSize
ListVaults を使った例
[csharp light=”true”]
glacier.ListVaults();
for(int i = 0; i < glacier.Vaults.Count; i++)
{
Console.WriteLine(glacier.Vaults[i].Name);
Console.WriteLine(glacier.Vaults[i].CreationDate);
Console.WriteLine(glacier.Vaults[i].LastInventoryDate);
Console.WriteLine(glacier.Vaults[i].ArchiveCount);
}[/csharp]
AmazonGlacier コンポーネントでは、 DeleteVault メソッドを呼び出すことによってボールトを削除でき、また CreateVault メソッドを呼び出して新規のボールトを作成できます。
ジョブの管理
ListJobs メソッドは、特定のボールトにおけるすべてのジョブをリスト表示します。ジョブが返される度に、 JobList イベントが発生します。さらに、ジョブ コレクションが読み込まれます。1 セットの結果で返されるデフォルトの上限は 1,000 ジョブです。 MaxListJobResults を設定することにより、結果の上限値を指定できます。呼び出し結果の数値が上限値を超える場合には、結果はページ分割されます。 IsJobPaged 設定が True となり、 JobMarker フィールドが読み込まれます。すべての結果を取得するには、 IsJobPaged が False を返し、 JobMarker が空の文字列となるまで ListJobs を再度呼び出します。
GetJobInfo メソッドは、JobId によって指定された単一のジョブの情報を取得します。
これらの呼び出しは、いずれも以下のフィールドを読み込みます。
JobTypeArchiveIdArchiveSizeArchiveSHA256TreeHashCompletedCompletionDateDescriptionJobIdSNSTopicSHA256TreeHashStatusCodeStatusMessageVaultArnInventorySize
ListJobs を使った例
[csharp light=”true”]glacier.ListJobs(TEST_VAULT_NAME);
for(int i = 0; i < glacier.Jobs.Count; i++)
{
Console.WriteLine(glacier.Jobs[i].JobId);
Console.WriteLine(glacier.Jobs[i].Type);
Console.WriteLine(glacier.Jobs[i].SNSTopic);
Console.WriteLine(glacier.Jobs[i].StatusMessage);
}[/csharp]
AmazonGlacier コンポーネントでは、 DeleteJob メソッドを呼び出すことによってジョブを削除でき、また CreateJob メソッドを呼び出して新規のジョブを作成できます。
アーカイブのアップロード
UploadArchive メソッドでは、VaultName で指定されたボールトにアーカイブをアップロードできます。データは、指定のソース セットから読み込まれます。データ ソースを設定するには 3 つのオプションがあります。
SetUploadStreamで有効なストリームを指定します。LocalFileでファイルを指定します。ArchiveDataでデータを文字列またはバイト配列として指定します。
このメソッドは、データがアップロードされると ArchiveId を返します。
UploadArchive を使った例
[csharp light=”true”]
//Setting ArchiveData
glacier.ArchiveData = "Test Archive";
String id = glacier.UploadArchive(TEST_VAULT_NAME_ARCHIVE, "It is a Test Archive");
//Setting LocalFile
glacier.LocalFile = myFile;
String id = glacier.UploadArchive(TEST_VAULT_NAME_ARCHIVE, "It is a Test Archive");[/csharp]
パートのアップロード
StartMultipartUpload メソッドを呼び出すと、マルチパート アップロード操作が開始します。マルチパート アップロードは、大容量のデータをアップロードしたいときや、アップロードを開始した時点でデータがどれくらいの容量かわからない場合などに有益です。
このメソッドによって返される UploadId を保存します。このアップロードで別の操作を行う場合には、この UploadId を使用します。
異なるコンポーネント インスタンスを使うことにより、パートを並列でアップロードできます。 UploadPart でパートをアップロードする場合、サーバー側でデータがきちんと順に再構成されるよう、パート番号が指定されます。
すべてのパートがアップロードされると、 CompleteMultipartUpload を呼び出して操作を終了します。コンポーネントの別のインスタンスを使ってアーカイブの一部をアップロードした場合には、最初に ListParts を呼び出して、 PartMarker が空になる (すべてのパートが返される) までアーカイブのすべてのパートを取得する必要があります。
マルチパート アップロードをキャンセルするには、 AbortMultipartUpload メソッドを呼び出します。
マルチパート アップロードの例
[csharp light=”true”]String multiUploadId = glacier.StartMultipartUpload(TEST_VAULT_NAME_ARCHIVE, "Multipart Upload");
for (int i = 0; i < 5; i++)
{
String fileName = "../part" + i;
glacier.LocalFile = fileName;
glacier.UploadPart(TEST_VAULT_NAME_ARCHIVE, mulUploadId, i);
}
String archiveId = glacier.CompleteMultipartUpload(TEST_VAULT_NAME_ARCHIVE, mulUploadId);[/csharp]
その他の機能
AmazonGlacier コンポーネントは、上記の他にも、以下の機能を提供します。
-
EncryptionAlgorithmおよびEncryptionPasswordを使ったファイルの暗号化と復号 -
GetNotificationInfoによる通知の管理 - その他
/n software 製品の詳細は、こちら をご覧ください。


