このページは、Vaults と 2012 年の元の REST API を使用する Amazon Glacier サービスの既存のお客様専用です。
アーカイブストレージソリューションをお探しの場合は、Amazon Glacier Amazon S3、S3 Glacier Flexible Retrieval、S3 S3 Glacier Deep Archive の Amazon Glacier ストレージクラスを使用することをお勧めします。これらのストレージオプションの詳細については、Amazon Glacier ストレージクラス
Amazon Glacier (元のスタンドアロンボールトベースのサービス) は、2025 年 12 月 15 日以降、既存の顧客に影響を与えずに新規顧客を受け入れなくなります。Amazon Glacier は、ボールトにデータを保存する独自の APIs を備えたスタンドアロンサービスであり、Amazon S3 および Amazon S3 Glacier ストレージクラスとは異なります。既存のデータは Amazon Glacier で無期限に安全でアクセス可能です。移行は必要ありません。低コストの長期アーカイブストレージの場合、 は Amazon S3 Glacier ストレージクラス
翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
を使用した大きなアーカイブのアップロード AWS SDK for .NET
両方高レベル API と低レベル API.NET 用の Amazon SDK で提供されているには、大きなアーカイブを部分的にアップロードするためのメソッドがあります (「」Amazon Glacier でのアーカイブのアップロード)。
-
高レベル API には、どのサイズのアーカイブのアップロードにも使用できるメソッドが用意されています。アップロードするファイルに応じて、 メソッドは 1 回のオペレーションでアーカイブをアップロードするか、Amazon Glacier (Amazon Glacier) のマルチパートアップロードサポートを使用してアーカイブをパート単位でアップロードします。
-
低レベル API は、基本となる REST 実装にほぼ対応しています。つまり、1 回のオペレーションで小さいアーカイブをアップロードするメソッド、および大きなアーカイブに対してマルチパートアップロードをサポートするメソッドのグループが用意されています。このセクションでは、低レベル API を使用してパート単位で大きなアーカイブをアップロードする方法について説明します。
高レベル API と低レベル API の詳細については、「Amazon Glacier AWS SDK for .NET での の使用」を参照してください。
トピック
の高レベル API を使用したパート単位での大規模なアーカイブのアップロード AWS SDK for .NET
高レベル API の同じメソッドを使用して、小さいアーカイブまたは大きなアーカイブをアップロードします。アーカイブのサイズに基づいて、高レベルの API メソッドは、アーカイブを 1 回のオペレーションでアップロードするか、Amazon Glacier が提供するマルチパートアップロード API を使用するかを決定します。詳細については、「の高レベル API を使用したアーカイブのアップロード AWS SDK for .NET」を参照してください。
の低レベル API を使用したパート単位での大きなアーカイブのアップロード AWS SDK for .NET
アップロードを細かくコントロールするために、低レベル API を使用して、リクエストの設定やレスポンスの処理を行うことができます。以下に、 AWS SDK for .NETを使用してパート単位で大きなアーカイブをアップロードする手順を示します。
-
AmazonGlacierClientクラスのインスタンス(クライアント)を作成します。アーカイブを保存する AWS リージョンを指定する必要があります。このクライアントを使用して実行するすべてのオペレーションは、その AWS リージョンに適用されます。
-
InitiateMultipartUploadメソッドを呼び出し、マルチパートアップロードを開始します。アーカイブのアップロード先となるボールト名、アーカイブのパートをアップロードするために使用するパートサイズ、およびオプションの説明を指定する必要があります。この情報は、
InitiateMultipartUploadRequestクラスのインスタンスを作成することによって指定します。Amazon Glacier により、レスポンスとしてアップロード ID が返されます。 -
UploadMultipartPartメソッドを呼び出し、パートをアップロードします。アップロードするパートごとに、ボールト名、このパートでアップロードされる最終的にアセンブルされたアーカイブ内のバイト範囲、パートデータのチェックサム、およびアップロード ID を指定する必要があります。
-
CompleteMultipartUploadメソッドを呼び出し、マルチパートアップロードを完了します。アップロード ID、アーカイブ全体のチェックサム、アーカイブのサイズ (アップロードしたすべてのパートを組み合わせたサイズ)、およびボールト名を指定する必要があります。Amazon Glacier は、アップロードされたパートからアーカイブを構築し、アーカイブ ID を返します。
例: .Amazon SDK for .NET を使用してパート単位で大きなアーカイブをアップロードする
次の C# コード例では AWS SDK for .NET 、 を使用してアーカイブをボールト () にアップロードしますexamplevault。この例を実行するための詳しい手順については、「コード例の実行」を参照してください。ここに示したコードは、アップロードするファイルの名前で更新する必要があります。
using System; using System.Collections.Generic; using System.IO; using Amazon.Glacier; using Amazon.Glacier.Model; using Amazon.Runtime; namespace glacier.amazon.com.rproxy.govskope.ca.docsamples { class ArchiveUploadMPU { static string vaultName = "examplevault"; static string archiveToUpload = "*** Provide file name (with full path) to upload ***"; static long partSize = 4194304; // 4 MB. public static void Main(string[] args) { AmazonGlacierClient client; List<string> partChecksumList = new List<string>(); try { using (client = new AmazonGlacierClient(Amazon.RegionEndpoint.USWest2)) { Console.WriteLine("Uploading an archive."); string uploadId = InitiateMultipartUpload(client); partChecksumList = UploadParts(uploadId, client); string archiveId = CompleteMPU(uploadId, client, partChecksumList); Console.WriteLine("Archive ID: {0}", archiveId); } Console.WriteLine("Operations successful. 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(); } static string InitiateMultipartUpload(AmazonGlacierClient client) { InitiateMultipartUploadRequest initiateMPUrequest = new InitiateMultipartUploadRequest() { VaultName = vaultName, PartSize = partSize, ArchiveDescription = "Test doc uploaded using MPU." }; InitiateMultipartUploadResponse initiateMPUresponse = client.InitiateMultipartUpload(initiateMPUrequest); return initiateMPUresponse.UploadId; } static List<string> UploadParts(string uploadID, AmazonGlacierClient client) { List<string> partChecksumList = new List<string>(); long currentPosition = 0; var buffer = new byte[Convert.ToInt32(partSize)]; long fileLength = new FileInfo(archiveToUpload).Length; using (FileStream fileToUpload = new FileStream(archiveToUpload, FileMode.Open, FileAccess.Read)) { while (fileToUpload.Position < fileLength) { Stream uploadPartStream = GlacierUtils.CreatePartStream(fileToUpload, partSize); string checksum = TreeHashGenerator.CalculateTreeHash(uploadPartStream); partChecksumList.Add(checksum); // Upload part. UploadMultipartPartRequest uploadMPUrequest = new UploadMultipartPartRequest() { VaultName = vaultName, Body = uploadPartStream, Checksum = checksum, UploadId = uploadID }; uploadMPUrequest.SetRange(currentPosition, currentPosition + uploadPartStream.Length - 1); client.UploadMultipartPart(uploadMPUrequest); currentPosition = currentPosition + uploadPartStream.Length; } } return partChecksumList; } static string CompleteMPU(string uploadID, AmazonGlacierClient client, List<string> partChecksumList) { long fileLength = new FileInfo(archiveToUpload).Length; CompleteMultipartUploadRequest completeMPUrequest = new CompleteMultipartUploadRequest() { UploadId = uploadID, ArchiveSize = fileLength.ToString(), Checksum = TreeHashGenerator.CalculateTreeHash(partChecksumList), VaultName = vaultName }; CompleteMultipartUploadResponse completeMPUresponse = client.CompleteMultipartUpload(completeMPUrequest); return completeMPUresponse.ArchiveId; } } }