はじめに
/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 を使った例
[csharp light=”true”]s3 = new S3();
s3.AccessKey = S3_ACCESS_KEY;
s3.SecretKey = S3_SECRET_KEY;[/csharp]
バケットの管理
ListBuckets
メソッドを使うと、アカウントに属するすべてのバケットを返します。このメソッドを実行すると、次のフィールドのデータが読み込まれます。
BucketName
CreationDate
OwnerId
OwnerName
OtherData
ListBuckets を使った例
[csharp light=”true”]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);
}[/csharp]
S3 コンポーネントでは、DeleteBucket
メソッドを呼び出すことによってバケットを削除でき、また CreateBucket
メソッドを呼び出して新規のバケットを作成できます。
さらに、以下のバケット管理機能も含まれています。
UpdateBucketACL
は、バケットのアクセス ポリシーを更新します。GetBucketLocation
は、バケットのロケーション値を返します。
オブジェクトの管理
ListObjects
メソッドは、任意のバケットにおけるすべてのオブジェクトを返します。バケットは、 Bucket
プロパティによって特定されます。 ObjectPrefix
、ObjectDelimiter
、または ObjectMarker
を使って ListObjects
メソッドの取得するオブジェクトをフィルター処理またはコントロールできます。
このメソッドを実行すると、次のフィールドのデータが読み込まれます。
ObjectName
ObjectModifiedDate
ObjectSize
ETag
OwnerId
OwnerName
UploadId
OtherData
ListObjects を使った例
[csharp light=”true”] 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);
}[/csharp]
S3 コンポーネントでは、 DeleteObject
メソッド を呼び出すことによってオブジェクトを削除でき、また CreateObject
メソッドを呼び出して新規のオブジェクトを作成できます。
希望のオブジェクトを取得するには、 GetObject
を呼び出します。これにより、 LocalFile
プロパティで指定されたファイルにオブジェクトが格納されます。バケット名は、 Bucket
プロパティを使って設定します。
GetObject を使った例
[csharp light=”true”]s3.Bucket = "TEST_BUCKET";
s3.LocalFile = "C:\\testFile.txt";
s3.GetObject("testObject");[/csharp]
この他にも、オブジェクトの管理に関する以下の機能があります。
UpdateObjectACL
でオブジェクトのアクセス ポリシーを更新GetTorrent
を使ってバケットからオブジェクトをトレントとして取得GetObjectInfo
によってParsedHeaders
プロパティにメタデータを格納AddUserMetaData
によるカスタム メタデータとオブジェクトの関連付けCreateObject
を呼び出す前に、AddUserMetaDat
a
を使って最大 2K のユーザー メタデータを集計GetLink
を使ってオブジェクトへのアクセスを可能にする認証済みリンクを生成
アップロードの管理
StartMultiPartUpload
を使うと、マルチパート アップロードを開始できます。このメソッドは、マルチパート アップロードを開始し、UploadIdassociated を返します。アップロードには有効期限はありません。アップロードを完了するには CompleteMultipartUpload
を、中止するには
AbortMultipartUpload
を呼び出します。
このメソッドで返される UploadId は、UploadPart
や AbortMultipartUpload
、CompleteMultipartUpload
、 ListParts
などのメソッドでパートをアップロードする際の参照に使用されます。
MultiPartUpload を使った例
[csharp light=”true”]//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);[/csharp]
ListParts
メソッドは、進行中のマルチパート アップロードにおけるすべてのパートのリストを取得します。進行中のアップロードのパートごとに PartList
イベントが発生します。Parts
コレクションも読み込まれます。パートを確認し、ETag、PartNumber、ObjectName などの情報を判別できます。
デフォルトでは、最初の 1,000 パートが返されます。結果がページ分割されているかどうかは、 IsPaged
で確認します。結果がページ分割されている場合には、IsPaged
が false を返すまで ListParts
を呼び出して、次のパートを取得します。Parts コレクションにはアップロードのパートがすべて含まれます。デフォルトの最大パート数を変更するには、MaxParts
を設定します。
UploadPart を使った例
[csharp light=”true”]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"); [/csharp]
その他の機能
S3 コンポーネントは、この他にも以下のような高度な機能を提供しています。
EncryptionAlgorithm
とEncryptionPassword
を使ったファイルを暗号化、および復号UpdateBucketACL
とUpdateObjectACL
を使ったバケットとオブジェクトのアクセス コントロール リスト (ACL) の管理CopyObject
を使ったオブジェクトのサーバーへのコピー- その他
/n software 製品の詳細は、こちら をご覧ください。