両方高レベル API と低レベル API (p. 121)AWS SDK for Java で提供しているように、アーカイブをアッ プロードするメソッドが用意されています。
トピック
• の高レベル API を使用してアーカイブをアップロードするAWSSDK for Java (p. 73)
• の低レベル API を使用して 1 回のオペレーションでアーカイブをアップロードするAWSSDK for Java (p. 74)
の高レベル API を使用してアーカイブをアップロードするAWSSDK for Java
高レベル API の ArchiveTransferManager クラスには、ボールトへのアーカイブのアップロードに使 用できる upload メソッドが用意されています。
Note
upload メソッドを使用して、小さなアーカイブや大きなアーカイブをアップロードできます。
このメソッドでは、アップロードするアーカイブのサイズに応じて、1 回のオペレーションで
1 回のオペレーションでアーカイブをアップロードする
アップロードするか、マルチパートアップロード API を使用してアーカイブをパート単位でアッ プロードするかを決定します。
例: の高レベル API を使用してアーカイブをアップロードするAWSSDK for Java
以下の Java コード例では、ボールト (examplevault)、米国西部 (オレゴン) リージョン (us-west-2).
サポートされているのリストについてはAWSリージョンとエンドポイントについては、」Amazon S3 Glacier (p. 6)。
この例を実行するための詳しい手順については、「Eclipse を使用した Amazon S3 Glacier の Java サンプ ルの実行 (p. 124)」を参照してください。ここに示したコードは、アップロードするボールトの名前と ファイルの名前で更新する必要があります。
Example
import java.io.File;
import java.io.IOException;
import java.util.Date;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.services.glacier.AmazonGlacierClient;
import com.amazonaws.services.glacier.transfer.ArchiveTransferManager;
import com.amazonaws.services.glacier.transfer.UploadResult;
public class ArchiveUploadHighLevel {
public static String vaultName = "*** provide vault name ***";
public static String archiveToUpload = "*** provide name of file to upload ***";
public static AmazonGlacierClient client;
public static void main(String[] args) throws IOException {
ProfileCredentialsProvider credentials = new ProfileCredentialsProvider();
client = new AmazonGlacierClient(credentials);
client.setEndpoint("https://glacier.us-west-2.amazonaws.com/");
try {
ArchiveTransferManager atm = new ArchiveTransferManager(client, credentials);
UploadResult result = atm.upload(vaultName, "my archive " + (new Date()), new File(archiveToUpload));
System.out.println("Archive ID: " + result.getArchiveId());
} catch (Exception e) {
System.err.println(e);
} } }
の低レベル API を使用して 1 回のオペレーションでアーカイブをアップロードす るAWSSDK for Java
低レベル API には、アーカイブに関するあらゆるオペレーションのメソッドが用意されています。以下で は、を使用してアーカイブをアップロードするステップを説明しますAWSSDK for Java
1. AmazonGlacierClient クラスのインスタンス(クライアント)を作成します。
1 回のオペレーションでアーカイブをアップロードする
あなたは指定する必要がありますAWSアーカイブをアップロードするリージョン。このクライアントを 使用して実行するすべてのオペレーションは、そのAWSリージョン。
2. UploadArchiveRequest クラスのインスタンスを作成することにより、リクエスト情報を指定しま す。
アップロードするデータのほかにも、ペイロードのチェックサム (SHA-256 木構造ハッシュ)、ボールト 名、データのコンテンツの長さ、およびアカウント ID を指定する必要があります。
アカウント ID を指定しなかった場合には、リクエストに署名する際に使用した認証情報に関連付けら れているアカウント ID が使用されます。詳細については、「の使用AWSAmazon S3 Glacier を使用し た SDK for Java (p. 122)」を参照してください。
3. を実行uploadArchiveリクエストオブジェクトをパラメータとして指定して、メソッドをリクエスト します。
レスポンスでは、Amazon S3 Glacier (S3 Glacier) によって新しくアップロードされたアーカイブの アーカイブ ID が返されます。
以下の Java コードスニペットは、前述の手順を示しています。
AmazonGlacierClient client;
UploadArchiveRequest request = new UploadArchiveRequest() .withVaultName("*** provide vault name ***")
.withChecksum(checksum)
.withBody(new ByteArrayInputStream(body)) .withContentLength((long)body.length);
UploadArchiveResult uploadArchiveResult = client.uploadArchive(request);
System.out.println("Location (includes ArchiveID): " + uploadArchiveResult.getLocation());
例: の低レベル API を使用して 1 回のオペレーションでアーカイブをアップロードするAWSSDK for Java
以下の Java コード例は、使用してAWSSDK for Javaexamplevault). この例を実行するための詳しい手 順については、「Eclipse を使用した Amazon S3 Glacier の Java サンプルの実行 (p. 124)」を参照して ください。ここに示したコードは、アップロードするボールトの名前とファイルの名前で更新する必要が あります。
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.services.glacier.AmazonGlacierClient;
import com.amazonaws.services.glacier.TreeHashGenerator;
import com.amazonaws.services.glacier.model.UploadArchiveRequest;
import com.amazonaws.services.glacier.model.UploadArchiveResult;
public class ArchiveUploadLowLevel {
public static String vaultName = "*** provide vault name ****";
public static String archiveFilePath = "*** provide to file upload ****";
public static AmazonGlacierClient client;
public static void main(String[] args) throws IOException {
ProfileCredentialsProvider credentials = new ProfileCredentialsProvider();
1 回のオペレーションでアーカイブをアップロードする
client = new AmazonGlacierClient(credentials);
client.setEndpoint("https://glacier.us-east-1.amazonaws.com/");
try {
// First open file and read.
File file = new File(archiveFilePath);
InputStream is = new FileInputStream(file);
byte[] body = new byte[(int) file.length()];
is.read(body);
// Send request.
UploadArchiveRequest request = new UploadArchiveRequest() .withVaultName(vaultName)
.withChecksum(TreeHashGenerator.calculateTreeHash(new File(archiveFilePath)))
.withBody(new ByteArrayInputStream(body)) .withContentLength((long)body.length);
UploadArchiveResult uploadArchiveResult = client.uploadArchive(request);
System.out.println("ArchiveID: " + uploadArchiveResult.getArchiveId());
} catch (Exception e) {
System.err.println("Archive not uploaded.");
System.err.println(e);
} } }
を使用して 1 回のオペレーションでアーカイブをアップロードす るAWSAmazon S3 Glacier SDK for .NET
両方高レベル API と低レベル API (p. 121)AWS SDK for .NET には、1 回のオペレーションでアーカイブ をアップロードするメソッドが用意されています。
トピック
• の高レベル API を使用してアーカイブをアップロードするAWS.NET 対応 SDK (p. 76)
• の低レベル API を使用して 1 回のオペレーションでアーカイブをアップロードするAWS.NET 対応 SDK (p. 77)
の高レベル API を使用してアーカイブをアップロードするAWS.NET 対応 SDK
高レベル API の ArchiveTransferManager クラスには、ボールトへのアーカイブのアップロードに使 用できる Upload メソッドが用意されています。
Note
Upload メソッドを使用して、小さなファイルや大きなファイルをアップロードできます。こ のメソッドでは、アップロードするファイルのサイズに応じて、1 回のオペレーションでアップ ロードするか、マルチパートアップロード API を使用してファイルをパート単位でアップロード するかを決定します。
例: の高レベル API を使用してアーカイブをアップロードするAWS.NET 対応 SDK
以下の C# コード例では、ボールト (examplevault) を米国西部 (オレゴン) リージョンで作成します。
この例を実行するための詳しい手順については、「コード例の実行 (p. 127)」を参照してください。ここ に示したコードは、アップロードするファイルの名前で更新する必要があります。
1 回のオペレーションでアーカイブをアップロードする
Example
using System;
using Amazon.Glacier;
using Amazon.Glacier.Transfer;
using Amazon.Runtime;
namespace glacier.amazon.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();
} }}
の低レベル API を使用して 1 回のオペレーションでアーカイブをアップロードす るAWS.NET 対応 SDK
低レベル API には、アーカイブに関するあらゆるオペレーションのメソッドが用意されています。以下で は、を使用してアーカイブをアップロードするステップを説明します。AWSSDK for .NET。
1. AmazonGlacierClient クラスのインスタンス(クライアント)を作成します。
あなたは指定する必要がありますAWSアーカイブをアップロードするリージョン。このクライアントを 使用して実行するすべてのオペレーションは、そのAWSリージョン。
2. UploadArchiveRequest クラスのインスタンスを作成することにより、リクエスト情報を指定しま す。
アップロードするデータのほかにも、ペイロードのチェックサム (SHA-256 木構造ハッシュ)、ボールト 名、およびアカウント ID を指定する必要があります。
アカウント ID を指定しなかった場合には、リクエストに署名する際に使用した認証情報に関連付けら れているアカウント ID が使用されます。詳細については、「の使用AWSAmazon S3 Glacier を使用し た .NET 対応 SDK (p. 125)」を参照してください。
3. を実行UploadArchiveリクエストオブジェクトをパラメータとして指定して、メソッドをリクエスト します。
レスポンスでは、S3 Glacier によって新しくアップロードされたアーカイブのアーカイブ ID が返され ます。
1 回のオペレーションでアーカイブをアップロードする
例: の低レベル API を使用して 1 回のオペレーションでアーカイブをアップロードするAWS.NET 対応 SDK
以下の C# コードの例は、前述の手順を示しています。この例では、を使用しますAWSSDK for .NET。
ボールト (examplevault).
Note
1 回のリクエストでアーカイブをアップロードする際に基盤となる REST API については、
「アーカイブのアップロード (POST archive) (p. 233)」を参照してください。
この例を実行するための詳しい手順については、「コード例の実行 (p. 127)」を参照してください。ここ に示したコードは、アップロードするファイルの名前で更新する必要があります。
Example
using System;
using System.IO;
using Amazon.Glacier;
using Amazon.Glacier.Model;
using Amazon.Runtime;
namespace glacier.amazon.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;
}
パート単位での大きなアーカイブのアップロード
} }}
REST API を使用して 1 回のオペレーションでアーカイブをアッ プロードする
アーカイブのアップロード API コールを使用して、1 回のオペレーションでアーカイブをアップロードす ることができます。詳細については、「アーカイブのアップロード (POST archive) (p. 233)」を参照し てください。
パート単位での大きなアーカイブのアップロード (マ ルチパートアップロード)
トピック
• マルチパートアップロードのプロセス (p. 79)
• 基本情報 (p. 80)
• を使用してパート単位で大きなアーカイブをアップロードするAWSSDK for Java (p. 81)
• を使用して大きなアーカイブをアップロードするAWS.NET 対応 SDK (p. 84)
• REST API を使用してパート単位で大きなアーカイブをアップロードする (p. 87)
マルチパートアップロードのプロセス
で説明しているようにAmazon S3 Glacier でのアーカイブのアップロード (p. 72)Amazon S3 Glacier (S3 Glacier) をご利用のお客様には 100 MB を超えるサイズのアーカイブをアップロードする際には、マル チパートアップロードを使用することをお勧めします。
1. Initiate Multipart Upload
マルチパートアップロードを開始するリクエストを送信すると、マルチパートアップロード ID が S3 Glacier から返されます。アップロード ID はマルチパートアップロードの一意の識別子です。後続の マルチパートアップロードオペレーションには、この ID が必要です。この ID は、S3 Glacier がジョ ブを完了してから少なくとも 24 時間は有効です。
マルチパートアップロードの開始リクエストで、パートサイズをバイト数で指定します。アップロー ドするパートは、最後のパートを除き、すべてこのサイズになります。
Note
マルチパートアップロードを使用する際にアーカイブ全体のサイズを把握している必要はあ りません。つまり、アーカイブのアップロードを開始するときにアーカイブのサイズがわか らない場合でも、マルチパートアップロードを使用できます。パートサイズを決定する必要 があるのは、マルチパートアップロードの開始時のみです。
マルチパートアップロードの開始リクエストでは、オプションでアーカイブの説明を指定することも できます。
2. パートのアップロード
パートのアップロードの各リクエストに、ステップ 1 で取得したマルチパートアップロード ID を含 める必要があります。リクエストでは、最終的なアーカイブ内でのパートの位置を特定するコンテン ツ範囲をバイト単位で指定する必要もあります。S3 Glacier は後でコンテンツ範囲情報を使用して、
アーカイブを適切な順序で組み立てます。アップロードする各パートのコンテンツ範囲を指定するた め、≷ は最終的にアセンブルされたアーカイブ内でのパートの位置を特定できます。そのため、任