Fazer upload de um arquivo em uma única operação usando o Amazon S3 Glacier - Amazon S3 Glacier

Esta página é somente para clientes existentes do serviço S3 Glacier que usam o Vaults e a API REST original de 2012.

Se você estiver procurando por soluções de armazenamento de arquivamento, sugerimos usar as classes de armazenamento 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 S3 Glacier e Armazenamento de dados de longo prazo usando classes de armazenamento S3 Glacier 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. Eles oferecem recursos como análise de custos de armazenamento, lente de armazenamento, recursos de segurança, incluindo várias opções de criptografia 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 o Amazon S3 Glacier

Tanto as APIs de nível superior quanto as de nível inferior fornecidas pelo Amazon SDK para .NET fornecem um método para carregar um arquivo em uma única operação.

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

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 pequenos ou grandes. 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 API de multipart upload para fazer upload do arquivo em partes.

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

O exemplo de código C# a seguir faz upload de um arquivo em um cofre (examplevault) na Região Oeste dos EUA (Oregon).

Para instruções detalhadas sobre como executar esse exemplo, consulte Executar exemplos de código. É preciso atualizar o código conforme mostrado com o nome do arquivo cujo upload deseja fazer.

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

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

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 .NET.

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

    É necessário especificar uma região 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 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 AWS SDK for .NET com o Amazon S3 Glacier .

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

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

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

O exemplo de código do C# a seguir ilustra as etapas anteriores. O exemplo usa o AWS SDK for .NET para fazer upload de um arquivo em um cofre (examplevault).

nota

Para obter informações sobre a API REST subjacente para fazer upload de um arquivo em uma única solicitação, consulte Upload Archive (POST archive).

Para instruções detalhadas sobre como executar esse exemplo, consulte Executar exemplos de código. É necessário atualizar o código conforme mostrado com o nome do arquivo cujo upload deseja fazer.

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