/n software Cloud Storage Integrator の使用方法: Amazon Glacier

はじめに

/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 製品の詳細は、こちら をご覧ください。