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

はじめに

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

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

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

前回の AmazonGlacier コンポーネントに続き、今回は Amazon の提供するスケーラブルなクラウド ストレージ サービス、Amazon Simple Storage Service (Amazon S3) 専用コンポーネント の使用方法について説明します。

Amazon S3

S3 コンポーネントでは、Amazon S3 に容易にアクセスでき、S3 のリソースが管理できます。バケットやオブジェクトの管理に加え、強力な暗号化サポートを提供します。

まず、Amazon S3 のアカウントを開設します。このプロセスについては、Amazon S3 のドキュメントを参照してください。

認証

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

AccessKey および SecretKey を使った例

s3 = new S3();
s3.AccessKey = S3_ACCESS_KEY;
s3.SecretKey = S3_SECRET_KEY;

バケットの管理

 ListBuckets  メソッドを使うと、アカウントに属するすべてのバケットを返します。このメソッドを実行すると、次のフィールドのデータが読み込まれます。

  •  BucketName 
  •  CreationDate 
  •  OwnerId 
  •  OwnerName 
  •  OtherData 

ListBuckets を使った例

s3.ListBuckets();
for(int i = 0; i < s3.Buckets.Count; i++)
{
  Console.WriteLine(s3.Buckets[i].Name);
  Console.WriteLine(s3.Buckets[i].CreationDate);
  Console.WriteLine(s3.Buckets[i].OwnerDisplayName);
}

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

  •  UpdateBucketACL  は、バケットのアクセス ポリシーを更新します。
  •  GetBucketLocation  は、バケットのロケーション値を返します。

オブジェクトの管理

 ListObjects  メソッドは、任意のバケットにおけるすべてのオブジェクトを返します。バケットは、 Bucket  プロパティによって特定されます。 ObjectPrefix ObjectDelimiter 、または ObjectMarker  を使って ListObjects  メソッドの取得するオブジェクトをフィルター処理またはコントロールできます。

このメソッドを実行すると、次のフィールドのデータが読み込まれます。

  •  ObjectName 
  •  ObjectModifiedDate 
  •  ObjectSize 
  •  ETag 
  •  OwnerId 
  •  OwnerName 
  •  UploadId 
  •  OtherData 

ListObjects を使った例

 s3.Bucket = "TEST_BUCKET";
 
//set prefix
s3.ObjectPrefix = "photos/2016/";
 
s3.ListObjects();
for(int i = 0; i < s3.Objects.Count; i++)
    {
        Console.WriteLine(s3.Objects[i].Name);
        Console.WriteLine(s3.Objects[i].LastModified);
        Console.WriteLine(s3.Objects[i].Size);
    }

S3 コンポーネントでは、 DeleteObject メソッド を呼び出すことによってオブジェクトを削除でき、また CreateObject メソッドを呼び出して新規のオブジェクトを作成できます。
希望のオブジェクトを取得するには、 GetObject  を呼び出します。これにより、 LocalFile プロパティで指定されたファイルにオブジェクトが格納されます。バケット名は、 Bucket  プロパティを使って設定します。

GetObject を使った例

s3.Bucket = "TEST_BUCKET";
s3.LocalFile = "C:\\testFile.txt";
s3.GetObject("testObject");

この他にも、オブジェクトの管理に関する以下の機能があります。

  •  UpdateObjectACL  でオブジェクトのアクセス ポリシーを更新
  •  GetTorrent を使ってバケットからオブジェクトをトレントとして取得
  •  GetObjectInfo  によって ParsedHeaders  プロパティにメタデータを格納
  •  AddUserMetaData  によるカスタム メタデータとオブジェクトの関連付け  CreateObject  を呼び出す前に、AddUserMetaDat を使って最大 2K のユーザー メタデータを集計
  •  GetLink  を使ってオブジェクトへのアクセスを可能にする認証済みリンクを生成

アップロードの管理

 StartMultiPartUpload を使うと、マルチパート アップロードを開始できます。このメソッドは、マルチパート アップロードを開始し、UploadIdassociated を返します。アップロードには有効期限はありません。アップロードを完了するには  CompleteMultipartUpload
を、中止するには AbortMultipartUpload を呼び出します。

このメソッドで返される UploadId は、UploadPart AbortMultipartUpload CompleteMultipartUpload ListParts  などのメソッドでパートをアップロードする際の参照に使用されます。

MultiPartUpload を使った例

//start to upload parts
s3.Bucket = "TEST_BUCKET";
String uploadId = s3.StartMultipartUpload("test_file.dat");
 
//list the current multipart uploads
s3.ListMultipartUploads();
for(int i = 0; i < s3.Objects.Count; i++)
{
  Console.WriteLine(s3.Objects[i].Name);
  Console.WriteLine(s3.Objects[i].UploadId);
  Console.WriteLine(s3.Objects[i].Size);
}
s3.CompleteMultipartUpload("test_file.dat", uploadId);

ListParts メソッドは、進行中のマルチパート アップロードにおけるすべてのパートのリストを取得します。進行中のアップロードのパートごとに PartList  イベントが発生します。Parts コレクションも読み込まれます。パートを確認し、ETagPartNumberObjectName などの情報を判別できます。

デフォルトでは、最初の 1,000 パートが返されます。結果がページ分割されているかどうかは、 IsPaged で確認します。結果がページ分割されている場合には、IsPaged が  false を返すまで ListParts を呼び出して、次のパートを取得します。Parts コレクションにはアップロードのパートがすべて含まれます。デフォルトの最大パート数を変更するには、MaxParts を設定します。

UploadPart を使った例

s3.Bucket = "TEST_BUCKET";
String uploadId = s3.StartMultipartUpload("test_file.dat");
 
//upload parts
s3.UploadPart("test_file.dat", 1, uploadId);
s3.UploadPart("test_file.dat", 2, uploadId);
 
//list all the parts
s3.ListParts("test_file.dat", uploadId);
for (int i = 0; i < s3.Parts.Count; i++)
{
  Console.WriteLine(s3.Parts[i].ObjectName);
  Console.WriteLine(s3.Parts[i].PartNumber);
  Console.WriteLine(s3.Parts[i].Size);
}
String uploadId = s3.StartMultipartUpload("test_file.dat"); 

その他の機能

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

  •  EncryptionAlgorithm EncryptionPassword を使ったファイルを暗号化、および復号
  •  UpdateBucketACL UpdateObjectACL  を使ったバケットとオブジェクトのアクセス コントロール リスト (ACL) の管理
  •  CopyObject を使ったオブジェクトのサーバーへのコピー
  • その他

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

シェアする

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

フォローする