Amazon Glacier servizio di backup nel cloud a basso costo
da Massimo Della Rovere · pubblicato il 18 maggio, 2014 · modificato il 5 giugno, 2017

Amazon Glacier è un’altro servizio appartenente al gruppo dello storage online. A differenza di Amazon S3 è più specifico per le operazioni di backup. Questo servizio è stato studiato per la memorizzazione di backup di grosse dimensioni ma mantenendo dei bassi costi di gestione. Con Amazon Glacier si possono eseguire backup settimanali, mensili, annuali che non necessitano poi di un’accesso in tempo reale.

Introduzione

Prima di memorizzare qualsiasi informazione su Amazon Glacier bisogna creare un cosidetto Vault, il quale può essere creato direttamente da console. Invece per quanto riguarda tutte le altre funzioni legate al servizio si richiede della programmazione usando i vari SDK messi a disposizione.  Uno dei grossi vantaggi per gli amministratori è quello di non doversi più preoccupare dell’occupazione dei propri archivi.

Per interagire con il servizio di Amazon Glacier bisogna utilizzare le REST API o in sostituzione i framework SDK per Java, .NET e PHP. Quest’ultimi hanno il vantaggio che non bisogna conoscere la struttura dei file legati alle informazioni di scambio ma basta utilizzare le funzioni messe a disposizione e integrarle nel proprio script.

Collegamenti per effettuare il download degli SDK
Framework Java http://aws.amazon.com/sdkforjava/
Framework .NET http://aws.amazon.com/sdkfornet/
Framework PHP http://aws.amazon.com/sdkforphp/

I componenti che bisogna conoscere prima di utilizzare Amazon Glacier sono il Vault, gli archivi, i Job e le configurazioni di notifica. Vediamo insieme questi componenti e prepariamo un’ambiente su Glacier per poter eseguire i nostri primi backup.

Vault

Come detto in precedenza la prima operazione che dobbiamo fare è creare un Vault (cassaforte), il quale ci consentirà la memorizzazione dei nostri archivi. Ogni Vault che verrà creato avrà un’indirizzo URI unico nell’ambito del nostro account, il formato dell’indirizzo completo sarà composto in questa maniera:

https://regionendpoint/account/vaults/vault_name

Nella creazione bisogna specificare obbligatoriamente la regione e il nome. Il nome del Vault deve essere univoco nell’ambito dell’account in una singola regione, ma può avere lo stesso nome su regioni geografiche diverse. È possibile memorizzazione in un vault un numero infinito di archivi, in base alle necessità si possono memorizzare tutti in un solo vault o su diversi. Tutte le operazioni sui vault come ad esempio la creazione o il listing possono essere eseguite solo su una regione geografica alla volta.

Note generali: un singolo account può creare un massimo di 1000 vault per regione. Un vault può essere cancellato solo se non contiene archivi al suo interno dall’esecuzione dell’ultimo inventario, circa 24 ore dall’ultima modifica. La lunghezza del nome deve essere compresa tra 1 e 255 caratteri. I caratteri ammessi sono: a-z A-z 0-9 _ . –

Creazione Vault

Per creare un Vault andate nella management console e selezionate il servizio nella regione geografica che desiderate utilizzare, se è la prima volta che viene utilizzato vi comparirà una schermata con un tasto “create vault” e uno schema grafico che riguarda il suo funzionamento generale. Vi riporto qui di seguito uno screenshot di esempio:

Amazon Glacier

Come potete notare la prima operazione è la creazione di un vault, l’assegnazione dei permessi di accesso tramite Amazon IAM e la configurazione opzionale delle notifiche tramite il servizio di Amazon SNS (Simple Notification Service). Quindi eseguiamo la creazione del vault dandogli un nome ed eventualmente attivando le notifiche. Una volta completata questa operazione dovreste vedere una schermata che vi elenca i nomi dei vaults esistenti nella zona geografica selezionata, una schermata di questo tipo:

Amazon Glacier

Una volta creato il Vault l’unica operazione di modifica permesse in questo momento e cambiare le opzioni di notifica, se volete cambiare il nome o altro, dovete cancellare il vault esistente e crearne uno nuovo, ovviamente non deve contenere archivi.

Archivi

Un archivio è l’unità base di memorizzazione di Amazon Glacier, può essere una foto, un video, un documento o qualsiasi tipo di file. Ogni archivio viene identificato da un ID univoco e una descrizione opzionale. Per ID univoco si intente solamente nell’ambito del singolo Vault. La descrizione opzionale è possibile inserirla solo durante l’operazione di upload, al momento non esiste nessuna funzione di modifica archivio.

Le operazioni sugli archivi che riguardano le funzioni di upload e download al momento sono disponibili solo tramite API e SDK, quindi bisogna scrivere uno script in base al linguaggio di programmazione utilizzato, vi riporto qui di seguito un’esempio java:

import java.io.File;
import java.io.IOException;
import java.util.Date;

import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.PropertiesCredentials;
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 file ***";
  public static AmazonGlacierClient client;

  public static void main(String[] args) throws IOException 
  {
    AWSCredentials credentials = new PropertiesCredentials(
    ArchiveUploadHighLevel.class.getResourceAsStream("AwsCredentials.properties"));
    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);
    }
  }
}

Per vedere altri esempi di codice su Amazon Glacier sviluppati anche con differenti linguaggi di programmazione vi consiglio la “documentazione ufficiale“, dove trovate anche la spiegazione di come dividere un’operazione di upload in diverse parti, molto utile per file di grandi dimensioni che rischiano continue cadute di timeout.

Jobs

Le operazioni di recupero dei dati o quelle per il listing dei vaults sono operazioni asincrone che vanno avviate con la definizione dei job. Solo al completamento del job definito è possibile recuperare i risultati delle operazioni richieste, questo tempo può richiedere anche 4 ore. Per una richiesta di inventario serve solo il vault name, mentre per una operazione di recupero bisogna specificare anche l’ID univoco dell’archivio.

Client FTP

Se avete la necessità di usare Amazon Glacier con un client grafico FTP come avviene spesso per il servizio di Amazon S3 devo dire che non trovate moltissimi software a disposizione in questo momento, io attualmente sto utilizzando con soddisfazione CrossFTP che permette una connessione sia S3 che Glacier. Se per caso avete esperienze diverse o trovate software migliori comunicatelo anche nei commenti del post.

Guida completa su AWS

Questo articolo appartiene ad una serie di pubblicazioni che costituiscono una guida completa dedicata agli Amazon Web Services.  Molti servizi che trattiamo in questo blog vengono anche spiegati con dei video che trovate nel nostro canale youtube. Se volete seguire questo percorso didattico iscrivetevi alla community Cloud AWS.

condividi