Esta página es solo para los clientes actuales del servicio S3 Glacier que utilizan Vaults y el original de 2012. REST API
Si busca soluciones de almacenamiento de archivos, le sugerimos que utilice las clases de almacenamiento S3 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 Clases de almacenamiento de S3 Glacier y Almacenamiento
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 única operación con AWS SDK for Java
Las API de alto y de bajo nivel que proporciona Amazon SDK para Java ofrecen un método para cargar un archivo.
Temas
Actualización de un archivo con la API de alto nivel de AWS SDK for Java
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: carga de un archivo con la API de alto nivel de AWS SDK for Java
En el ejemplo de código Java siguiente, se carga un archivo a un almacén (examplevault
) de la región Oeste de EE. UU. (Oregón) (us-west-2
). Para ver una lista de las regiones de AWS y los puntos de conexión admitidos, consulte Acceso a Amazon S3 Glacier.
Para obtener instrucciones paso a paso sobre cómo ejecutar este ejemplo, consulte Ejecución de ejemplos de Java para Amazon S3 Glacier con Eclipse. Es necesario actualizar el código mostrado con el nombre del almacén donde se va a realizar la carga y el nombre del archivo que se va a cargar.
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); } } }
Carga de un archivo en una única operación con la API de bajo nivel de AWS SDK for Java
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 for Java.
-
Cree una instancia de la clase
AmazonGlacierClient
(el cliente).Debe especificar la región de AWS en la que quiere cargar el archivo. Todas las operaciones que realice con este cliente se aplican a esa región de AWS.
-
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, la longitud del contenido de los datos 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 for Java con Amazon S3 Glacier.
-
Ejecute el método
uploadArchive
proporcionando el objeto de solicitud como parámetro.En respuesta, Amazon S3 Glacier (S3 Glacier) devuelve el ID del archivo que acaba de cargarse.
En el siguiente fragmento de código Java, se ilustran los pasos 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());
Ejemplo: Carga de un archivo en una única operación con la API de bajo nivel de AWS SDK for Java
En el siguiente ejemplo de código Java, se utiliza AWS SDK for Java para cargar un archivo en un almacén (examplevault
). Para obtener instrucciones paso a paso sobre cómo ejecutar este ejemplo, consulte Ejecución de ejemplos de Java para Amazon S3 Glacier con Eclipse. Es necesario actualizar el código mostrado con el nombre del almacén donde se va a realizar la carga y el nombre del archivo que se va a cargar.
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); } } }