Amazon S3 Glacier で AWS SDK for .NET を使用して 1 回のオペレーションでアーカイブをアップロードする - Amazon S3 Glacier

このページは、2012 年にリリースされた当初のボールトと REST API を使用する、S3 Glacier サービスの既存のお客様を対象としたものです。

アーカイブストレージソリューションをお探しの場合は、Amazon S3 の S3 Glacier ストレージクラス (S3 Glacier Instant RetrievalS3 Glacier Flexible RetrievalS3 Glacier Deep Archive) を使用することをお勧めします。これらのストレージオプションの詳細については、「Amazon S3 ユーザーガイド」の「S3 Glacier ストレージクラス」および「長期データストレージとしての S3 Glacier ストレージクラスを理解する」を参照してください。これらのストレージクラスは Amazon S3 API を使用し、すべてのリージョンで利用可能で、Amazon S3 コンソール内で管理できます。提供される機能には、ストレージコスト分析、ストレージレンズ、高度なオプションの暗号化機能などがあります。

Amazon S3 Glacier で AWS SDK for .NET を使用して 1 回のオペレーションでアーカイブをアップロードする

両方高レベル API と低レベル API.NET 用の Amazon SDK で提供されているには、1 回のオペレーションでアーカイブをアップロードすることができます。

AWS SDK for .NET の高レベル API を使用してアーカイブをアップロードする

高レベル API の ArchiveTransferManager クラスには、ボールトへのアーカイブのアップロードに使用できる Upload メソッドが用意されています。

注記

Upload メソッドを使用して、小さなファイルや大きなファイルをアップロードできます。このメソッドでは、アップロードするファイルのサイズに応じて、1 回のオペレーションでアップロードするか、マルチパートアップロード API を使用してファイルをパート単位でアップロードするかを決定します。

例: AWS SDK for .NET の高レベル API を使用してアーカイブをアップロードする

次の C# コード例では、米国西部(オレゴン リージョン のボールト (examplevault) にアーカイブをアップロードします。

この例を実行するための詳しい手順については、「コード例の実行」を参照してください。ここに示したコードは、アップロードするファイルの名前で更新する必要があります。

using System; using Amazon.Glacier; using Amazon.Glacier.Transfer; using Amazon.Runtime; namespace glacier.amazon.com.rproxy.goskope.com.docsamples { class ArchiveUploadHighLevel { static string vaultName = "examplevault"; static string archiveToUpload = "*** Provide file name (with full path) to upload ***"; public static void Main(string[] args) { try { var manager = new ArchiveTransferManager(Amazon.RegionEndpoint.USWest2); // Upload an archive. string archiveId = manager.Upload(vaultName, "upload archive test", archiveToUpload).ArchiveId; Console.WriteLine("Archive ID: (Copy and save this ID for use in other examples.) : {0}", archiveId); Console.WriteLine("To continue, press Enter"); Console.ReadKey(); } catch (AmazonGlacierException e) { Console.WriteLine(e.Message); } catch (AmazonServiceException e) { Console.WriteLine(e.Message); } catch (Exception e) { Console.WriteLine(e.Message); } Console.WriteLine("To continue, press Enter"); Console.ReadKey(); } } }

AWS SDK for .NET の低レベル API を使用して 1 回のオペレーションでアーカイブをアップロードする

低レベル API には、アーカイブに関するあらゆるオペレーションのメソッドが用意されています。以下では、AWS SDK for .NET を使用してアーカイブをアップロードするステップを説明します。

  1. AmazonGlacierClient クラスのインスタンス(クライアント)を作成します。

    アーカイブのアップロード先となる AWS リージョンを指定する必要があります。このクライアントを使用して実行するすべてのオペレーションは、そのAWSリージョンに適用されます。

  2. UploadArchiveRequest クラスのインスタンスを作成することにより、リクエスト情報を指定します。

    アップロードするデータのほかにも、ペイロードのチェックサム (SHA-256 木構造ハッシュ)、ボールト名、およびアカウント ID を指定する必要があります。

    アカウント ID を指定しなかった場合には、リクエストに署名する際に使用した認証情報に関連付けられているアカウント ID が使用されます。詳細については、「Amazon S3 Glacier でのAWS SDK for .NETの使用」を参照してください。

  3. リクエストオブジェクトをパラメータとして指定して、UploadArchive メソッドを実行します。

    レスポンスでは、S3 Glacier によって新しくアップロードされたアーカイブのアーカイブ ID が返されます。

例: AWS SDK for .NET の低レベル API を使用して 1 回のオペレーションでアーカイブをアップロードする

以下の C# コードの例は、前述の手順を示しています。この例では、AWS SDK for .NET を使用してボールト (examplevault) にアーカイブをアップロードしています。

注記

1 回のリクエストでアーカイブをアップロードする際に基盤となる REST API については、「アーカイブのアップロード (POST archive)」を参照してください。

この例を実行するための詳しい手順については、「コード例の実行」を参照してください。ここに示したコードは、アップロードするファイルの名前で更新する必要があります。

using System; using System.IO; using Amazon.Glacier; using Amazon.Glacier.Model; using Amazon.Runtime; namespace glacier.amazon.com.rproxy.goskope.com.docsamples { class ArchiveUploadSingleOpLowLevel { static string vaultName = "examplevault"; static string archiveToUpload = "*** Provide file name (with full path) to upload ***"; public static void Main(string[] args) { AmazonGlacierClient client; try { using (client = new AmazonGlacierClient(Amazon.RegionEndpoint.USWest2)) { Console.WriteLine("Uploading an archive."); string archiveId = UploadAnArchive(client); Console.WriteLine("Archive ID: {0}", archiveId); } } catch (AmazonGlacierException e) { Console.WriteLine(e.Message); } catch (AmazonServiceException e) { Console.WriteLine(e.Message); } catch (Exception e) { Console.WriteLine(e.Message); } Console.WriteLine("To continue, press Enter"); Console.ReadKey(); } static string UploadAnArchive(AmazonGlacierClient client) { using (FileStream fileStream = new FileStream(archiveToUpload, FileMode.Open, FileAccess.Read)) { string treeHash = TreeHashGenerator.CalculateTreeHash(fileStream); UploadArchiveRequest request = new UploadArchiveRequest() { VaultName = vaultName, Body = fileStream, Checksum = treeHash }; UploadArchiveResponse response = client.UploadArchive(request); string archiveID = response.ArchiveId; return archiveID; } } } }