• 検索結果がありません。

回のオペレーションでアーカイブをアップロードす るAWSSDK for Java

ドキュメント内 Amazon S3 Glacier - 開発者ガイド (ページ 80-181)

両方高レベル 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 は後でコンテンツ範囲情報を使用して、

アーカイブを適切な順序で組み立てます。アップロードする各パートのコンテンツ範囲を指定するた め、≷ は最終的にアセンブルされたアーカイブ内でのパートの位置を特定できます。そのため、任

ドキュメント内 Amazon S3 Glacier - 開発者ガイド (ページ 80-181)