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
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.
Tópicos
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.
-
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.
-
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 .
-
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); } } }