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

Se você é novato no Amazon Simple Storage Service (Amazon S3), recomendamos que comece aprendendo mais sobre as classes de armazenamento S3 Glacier no Amazon S3, S3 Glacier Instant Retrieval, S3 Glacier Flexible Retrieval e S3 Glacier Deep Archive. Para obter mais informações, consulte Classes de armazenamento S3 Glacier e Classes de armazenamento para arquivamento de objetos no Guia do usuário do Amazon S3.

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 AWS de 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 obter mais informações, consulte Como usar o Amazon S3 Glacier com a AWS SDK for Java.

  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. Faz-se necessário 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); } } }