はじめに
/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
によって指定された単一のボールトの情報を取得します。
これらの呼び出しはいずれも以下のフィールドのデータを読み込みます。
ArchiveCount
Arn
CreationDate
LastInventoryDate
Name
Size
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 によって指定された単一のジョブの情報を取得します。
これらの呼び出しは、いずれも以下のフィールドを読み込みます。
JobType
ArchiveId
ArchiveSize
ArchiveSHA256TreeHash
Completed
CompletionDate
Description
JobId
SNSTopic
SHA256TreeHash
StatusCode
StatusMessage
VaultArn
InventorySize
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 製品の詳細は、こちら をご覧ください。