Fazer upload de um arquivo em uma única operação usando-se o AWS SDK for Java - Amazon S3 Glacier

Esta página destina-se somente a clientes atuais do serviço S3 Glacier que usam cofres e a API REST original de 2012.

Se você estiver procurando soluções de armazenamento de arquivos, sugerimos usar as classes de armazenamento do S3 Glacier no Amazon S3: S3 Glacier Instant Retrieval, S3 Glacier Flexible Retrieval e S3 Glacier Deep Archive. Para saber mais sobre essas opções de armazenamento, consulte Classes de armazenamento do Amazon S3 Glacier e Noções básicas sobre as classes de armazenamento S3 Glacier para armazenamento de dados de longo prazo no Guia do usuário do Amazon S3. Essas classes de armazenamento usam a API do Amazon S3, estão disponíveis em todas as regiões e podem ser gerenciadas no console do Amazon S3. Elas oferecem análise de custos de armazenamento, Lente de Armazenamento, recursos avançados de criptografia opcionais e muito mais.

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Fazer upload de um arquivo em uma única operação usando-se o AWS SDK for Java

As APIs de nível superior e inferior fornecidas pelo Amazon SDK para Java fornecem um método para carregar um arquivo.

Fazer upload de um arquivo usando a API de nível superior do AWS SDK for Java

A classe ArchiveTransferManager da API de nível superior fornece o método upload, que você pode usar para fazer upload de um arquivo em um cofre.

nota

Você pode usar o método upload para fazer upload de arquivos grandes ou pequenos. Dependendo do tamanho do arquivo que você estiver fazendo upload, esse método determina se é necessário fazer upload dele em uma única operação ou usar a multipart upload API para fazer upload do arquivo em partes.

Exemplo: fazer upload de um arquivo usando a API de nível superior do AWS SDK for Java

O exemplo de código Java a seguir faz upload de um arquivo em um cofre (examplevault) na Região (us-west-2) Oeste dos EUA (Oregon). Para obter uma lista de regiões Acessar o Amazon S3 Glacier e endpoints compatíveis, consulte AWS.

Para instruções detalhadas sobre como executar esse exemplo, consulte Executar exemplos do Java para o Amazon S3 Glacier usando o Eclipse. É preciso atualizar o código conforme mostrado com o nome do cofre cujo upload você deseja fazer e o nome do arquivo cujo upload quer fazer.

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); } } }

Fazer upload de um arquivo em uma única operação usando a API de nível inferior do AWS SDK for Java

A API de nível inferior fornece métodos para todas as operações de arquivo. Veja a seguir as etapas para carregar um arquivo usando o AWS SDK for Java.

  1. Crie uma instância da classe AmazonGlacierClient (o cliente).

    É necessário especificar uma região da AWS onde deseja fazer upload do arquivo. Todas as operações realizadas por você usando esse cliente se aplicam a essa região AWS.

  2. Forneça informações sobre a solicitação criando uma instância da classe UploadArchiveRequest.

    Além dos dados cujo upload deseja fazer, você precisa fornecer uma soma de verificação (hash de árvore SHA-256) da carga útil, o nome do cofre, o tamanho do conteúdo dos dados e o ID da conta.

    Se você não fornecer um ID da conta, o ID da conta associado às credenciais fornecidas por você para assinar a solicitação será pressuposto. Para ter mais informações, consulte Como usar o AWS SDK for Java com o Amazon S3 Glacier .

  3. Execute o método uploadArchive fornecendo o objeto de solicitação como um parâmetro.

    Em resposta, o Amazon S3 Glacier retorna um ID do arquivo recém-carregado.

O trecho de código Java a seguir ilustra as etapas anteriores.

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());

Exemplo: fazer upload de um arquivo em uma única operação usando a API de baixo nível do AWS SDK for Java

O exemplo de código do Java a seguir usa o AWS SDK for Java para fazer upload de um arquivo em um cofre (examplevault). Para instruções detalhadas sobre como executar esse exemplo, consulte Executar exemplos do Java para o Amazon S3 Glacier usando o Eclipse. É preciso atualizar o código conforme mostrado com o nome do cofre cujo upload você deseja fazer e o nome do arquivo cujo upload quer fazer.

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(); 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); } } }