

 **Esta página es solo para los clientes actuales del servicio Amazon Glacier que utilizan Vaults y la API de REST original de 2012.**

Si busca soluciones de almacenamiento de archivos, se recomienda que utilice las clases de almacenamiento de Amazon Glacier en Amazon S3, S3 Glacier Instant Retrieval, S3 Glacier Flexible Retrieval y S3 Glacier Deep Archive. Para obtener más información sobre estas opciones de almacenamiento, consulte las [clases de almacenamiento de Amazon Glacier](https://aws.amazon.com/s3/storage-classes/glacier/).

Amazon Glacier (servicio original independiente basado en bóveda) ya no acepta nuevos clientes. Amazon Glacier es un servicio independiente propio APIs que almacena datos en almacenes y es distinto de las clases de almacenamiento Amazon S3 y Amazon S3 Glacier. Sus datos actuales permanecerán seguros y accesibles en Amazon Glacier de forma indefinida. No hay que hacer migraciones. Para un almacenamiento de archivos a largo plazo y de bajo costo, AWS recomienda las [clases de almacenamiento Amazon S3 Glacier](https://aws.amazon.com/s3/storage-classes/glacier/), que ofrecen una experiencia de cliente superior con S3 basada en cubos APIs, Región de AWS disponibilidad total, costos más bajos e AWS integración de servicios. Si desea mejorar las capacidades, considere la posibilidad de migrar a las clases de almacenamiento de Amazon S3 Glacier mediante nuestra [AWS Guía de soluciones para la transferencia de datos de los almacenes de Amazon Glacier a las clases de almacenamiento de Amazon S3 Glacier](https://aws.amazon.com/solutions/guidance/data-transfer-from-amazon-s3-glacier-vaults-to-amazon-s3/).

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Carga de un archivo en una sola operación mediante Amazon AWS SDK para .NET Glacier
<a name="uploading-an-archive-single-op-using-dotnet"></a>

Tanto el [nivel alto como el nivel bajo](using-aws-sdk.md) que APIs proporciona Amazon SDK para .NET proporcionan un método para cargar un archivo en una sola operación.

**Topics**
+ [Carga de un archivo mediante la API de alto nivel del AWS SDK para .NET](#uploading-an-archive-single-op-highlevel-using-dotnet)
+ [Carga de un archivo en una sola operación mediante la API de bajo nivel del AWS SDK para .NET](#uploading-an-archive-single-op-lowlevel-using-dotnet)

## Carga de un archivo mediante la API de alto nivel del AWS SDK para .NET
<a name="uploading-an-archive-single-op-highlevel-using-dotnet"></a>

La clase `ArchiveTransferManager` de la API de alto nivel le brinda el método `Upload`, que le permite cargar un archivo en un almacén. 

**nota**  
Puede utilizar el método `Upload` para cargar archivos grandes o pequeños. En función del tamaño del archivo que se va a cargar, este método determina si la carga se va a efectuar en una sola operación o se va a utilizar una API de carga multiparte para cargar el archivo por partes.

### Ejemplo: cargar un archivo mediante la API de alto nivel del AWS SDK para .NET
<a name="upload-archive-highlevel-any-size-dotnet"></a>

En el ejemplo de código C\$1 siguiente, se carga un archivo a un almacén (`examplevault`) de la región Oeste de EE. UU. (Oregón). 

Para step-by-step obtener instrucciones sobre cómo ejecutar este ejemplo, consulte[Ejecución de los ejemplos de código](using-aws-sdk-for-dot-net.md#setting-up-and-testing-sdk-dotnet). Debe actualizar el código mostrado con el nombre del archivo que quiera cargar.

**Example**  

```
using System;
using Amazon.Glacier;
using Amazon.Glacier.Transfer;
using Amazon.Runtime;

namespace glacier.amazon.com.rproxy.govskope.us.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();
    }
  }
}
```

## Carga de un archivo en una sola operación mediante la API de bajo nivel del AWS SDK para .NET
<a name="uploading-an-archive-single-op-lowlevel-using-dotnet"></a>

La API de bajo nivel dispone de métodos para todas las operaciones de archivo. A continuación, se indican los pasos necesarios para cargar un archivo con AWS SDK para .NET.

 

1. Cree una instancia de la clase `AmazonGlacierClient` (el cliente). 

   Debe especificar la AWS región en la que desea cargar el archivo. Todas las operaciones que realice con este cliente se aplican a esa AWS región. 

1. Proporcione la información de la solicitud creando una instancia de la clase `UploadArchiveRequest`.

   Además de los datos que desea cargar, debe proporcionar una suma de comprobación (un hash en árbol SHA-256) de la carga, el nombre del almacén y el ID de la cuenta. 

   Si no proporciona el ID de la cuenta, se presumirá que se trata del ID de cuenta asociado a las credenciales proporcionadas para firmar la solicitud. Para obtener más información, consulte [Uso de AWS SDK para .NET con Amazon Glacier](using-aws-sdk-for-dot-net.md). 

1. Ejecute el método `UploadArchive` proporcionando el objeto de solicitud como parámetro. 

   En respuesta, Amazon Glacier devuelve el ID del archivo que acaba de cargarse. 

### Ejemplo: cargar un archivo en una sola operación mediante la API de bajo nivel del AWS SDK para .NET
<a name="upload-archive-single-op-lowlevel-dotnet"></a>

En el siguiente ejemplo de código C\$1, se ilustran los pasos anteriores. En el ejemplo se utiliza AWS SDK para .NET para cargar un archivo en una bóveda ()`examplevault`. 

**nota**  
Para obtener información sobre la API de REST subyacente para cargar un archivo en una única solicitud, consulte [Carga de archivo (POST archivo)](api-archive-post.md).

Para step-by-step obtener instrucciones sobre cómo ejecutar este ejemplo, consulte[Ejecución de los ejemplos de código](using-aws-sdk-for-dot-net.md#setting-up-and-testing-sdk-dotnet). Debe actualizar el código mostrado con el nombre del archivo que quiera cargar.

**Example**  

```
using System;
using System.IO;
using Amazon.Glacier;
using Amazon.Glacier.Model;
using Amazon.Runtime;

namespace glacier.amazon.com.rproxy.govskope.us.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;
      }
    }
  }
}
```