はじめに
/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 を使った例
glacier = new Glacier(); glacier.AccessKey = GLACIER_ACCESS_KEY; glacier.SecretKey = GLACIER_SECRET_KEY;
ボールトの管理
AmazonGlacier コンポーネントを使うと、ボールトを作成、削除し、またそのリストを取得できます。
ListVaults
メソッドは、アカウントに属するすべてのボールトを返します。デフォルトの上限は1,000 ボールトですが、 MaxListVaultResults
パラメーターを設定することにより調節できます。呼び出し結果のボールトの数値が上限値を超える場合には、結果はページ分割されます。 IsVaultPaged
の設定が True となり、 VaultMarker
フィールドが読み込まれます。すべての結果を取得するには、 IsVaultPaged
が False を返し、 VaultMarker
が空の文字列となるまで ListVaults
を再度呼び出します。
GetVaultInfo
メソッドは、 VaultName
によって指定された単一のボールトの情報を取得します。
これらの呼び出しはいずれも以下のフィールドのデータを読み込みます。
ArchiveCount
Arn
CreationDate
LastInventoryDate
Name
Size
ListVaults を使った例
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); }
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 を使った例
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); }
AmazonGlacier コンポーネントでは、 DeleteJob
メソッドを呼び出すことによってジョブを削除でき、また CreateJob
メソッドを呼び出して新規のジョブを作成できます。
アーカイブのアップロード
UploadArchive
メソッドでは、VaultName で指定されたボールトにアーカイブをアップロードできます。データは、指定のソース セットから読み込まれます。データ ソースを設定するには 3 つのオプションがあります。
SetUploadStream
で有効なストリームを指定します。LocalFile
でファイルを指定します。ArchiveData
でデータを文字列またはバイト配列として指定します。
このメソッドは、データがアップロードされると ArchiveId を返します。
UploadArchive を使った例
//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");
パートのアップロード
StartMultipartUpload
メソッドを呼び出すと、マルチパート アップロード操作が開始します。マルチパート アップロードは、大容量のデータをアップロードしたいときや、アップロードを開始した時点でデータがどれくらいの容量かわからない場合などに有益です。
このメソッドによって返される UploadId を保存します。このアップロードで別の操作を行う場合には、この UploadId を使用します。
異なるコンポーネント インスタンスを使うことにより、パートを並列でアップロードできます。 UploadPart
でパートをアップロードする場合、サーバー側でデータがきちんと順に再構成されるよう、パート番号が指定されます。
すべてのパートがアップロードされると、 CompleteMultipartUpload
を呼び出して操作を終了します。コンポーネントの別のインスタンスを使ってアーカイブの一部をアップロードした場合には、最初に ListParts
を呼び出して、 PartMarker
が空になる (すべてのパートが返される) までアーカイブのすべてのパートを取得する必要があります。
マルチパート アップロードをキャンセルするには、 AbortMultipartUpload
メソッドを呼び出します。
マルチパート アップロードの例
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);
その他の機能
AmazonGlacier コンポーネントは、上記の他にも、以下の機能を提供します。
-
EncryptionAlgorithm
およびEncryptionPassword
を使ったファイルの暗号化と復号 -
GetNotificationInfo
による通知の管理 - その他
/n software 製品の詳細は、こちら をご覧ください。