Vai al contenuto

Sincronizzazione file con AWS S3

Concetti di base

Configurazione I parametri da usare come configurazione sono quelli presenti nella tabella AWSPROFILE. Per ciascun cliente, una volta scritti non sono modificabili. Di conseguenza, e' possibile fare in modo che la prima volta che si accede all'applicazione, se le configurazioni sono vuote vengano importate dal record specifico dell'azienda sulla tabella AWSPROFILE. Dopodiche' si andranno a leggere dalla configurazione:

I parametri necessari sono: 1. aws_active -> Contiene "S" se e' attivo il metodo "AWS S3"; altrimenti usa il metodo tradizionale FTP 2. aws_key_id -> verra' usato come "profile" 3. aws_key_secret -> Non verra' usato perche' salvato nel file di configurazione dopo la configurazione iniziale 4. aws_bucket_name -> Nome del bucket da utilizzare nella composizione dei comandi di copia 5. aws_profile_name -> Nome del profilo da utilizzare nella composizione dei comandi di copia

Accesso ad AWS Ogni utente (azienda) accedera' ad AWS tramite una applicazione command-line che viene installata sul server necessario; la prima chiamata servira' per effettuare la profilazione, creando un apposito file di testo in una cartella predefinita di AWS, che contiene i parametri di cui sopra (non e' necessario ripeterli ad ogni connessione). L'accesso avviene attraverso un nome profilo che viene assegnato all'utente. Per il momento prevediamo di eseguire questo processo usando uno script che usa i parametri necessari (quelli configurati) e crea i files di configurazione. Finche' non abbiamo le configurazioni presenti l'operazione non prosegue.

Comandi di copia $ aws s3 cp /es2000/programmi/eurocoge/cbl/coge20.cbl s3://aws_bucket_name/path/ --profile aws_profile_name

NB: * Non e' necessario creare i bucket e le sottocartelle

Logica generale di implementazione

Tutte le attivita' di profilazione iniziale, configurazione, e trasferimento dei dati dovranno essere effettuate da un unico programma, che potrebbe essere "FTP" (il programma che attualmente si occupa del trasferimento usando il protocollo FTP). Ogni programma che deve effettuare un trasferimento file da locale allo storage o viceversa, di conseguenza non dovra' fare altro che: * Preparare i file da spedire e chiamare "FTP" (in caso di upload) * Chiamare "FTP" e lavorare i files ricevuti (in caso di download)

Quindi il programma FTP dovra' essere richiamato all'inizio del programma, in modalita' di controllo, in modo da acquisire la configurazioni da AWSPROFILE.

Configurazione iniziale

L'unica configurazione che e' necessario attivare manualmente su Area e': attivazione-bucket. Finche' vale "N", non sara' fatta nessuna ricerca delle altre configurazioni, e si dara' per scontato l'utilizzo del protocollo FTP, come teoricamente gia' configurato. Quando si vuole attivare AWS, e' necessario impostare la configurazione a "F": in questo modo verra' forzata la ricerca della configurazione da Awsprofile: se invece vale "S", il sistema dara' per scontato che la profilazione sia gia' avvenuta.

attivazione-bucket Attivita'
"N" Il sistema non utilizzera' AWS
"S" Attiva l'uso di AWS, dando per scontato che le configurazioni siano gia' presenti e acquisite regolarmente
"F" Forza l'acquisizione delle configurazioni da Awsprofile, imposta a "S" la configurazione attivazione-bucket, e si comporta come nel caso "S"

Processo di configurazione iniziale La configurazione iniziale verra' innescata dalla seguente sequenza: 1. Un programma richiede un upload/download; come prima operazione chiama FTP con l'operazione "CheckServer" 1. FTP a sua volta testa la configurazione; la trova a "F" 1. Viene innescato il programma AWSCFG 1. Dopo aver letto i parametri dalla tabella AWSPROFILE, esegue tramite C$SYSTEM lo script EXT-SYS-DIR/"configaws.py", passandogli come parametri profile-name, keyId, keySecret 2. Al termine si ritorna a FTP, che esegue un check se la configurazione e' corretta: 1. tenta un download del file "hereiam.txt" che dovrebbe essere nella radice del bucket 2. Se il file viene restituito, allora la configurazione e' regolare

NB: lo script dovra' essere compreso nei rilasci iniziali, e negli ambienti master

Server Windows

Lo script di configurazione "configaws.py" e' stato customizzato per poter girare sotto server Windows. Tuttavia l'installazione e l'esecuzione non sono comunque pulite: nonostante la direttiva acurcl dica al runtime di usare l'utente "administrator", l'utente usato e' "system". Di conseguenza, se non si riesce ad eseguire lo script configaws.py da runtime, eseguirlo da un prompt dei comandi non e' sufficiente perche' lo configura per l'utente administrator, e non per "system". Quindi come workaround si puo' copiare la cartella ".aws" che contiene i files di configurazione al di sotto di quella dell'utente "system": c:\windows\system32\config\systemprofile

Base dati interessata

Tabelle * AWSPROFILE - Parametri di connessione AWS S3: tabella costruita da Areagate durante la profilazione, e viene usata per importare le configurazioni locali sull'applicazione.

Configurazioni * attivazione-bucket * key-id * key-secret * bucket-name * profile-name

Programmi interessati

Programma Attivita'
AWSCFG - Importazione configurazioni Programma nuovo che acquisisce le configurazioni da una apposita tabella WEB
FTP - Trasferimento documenti Modificato per gestire il trasferimento usando AWS
SWA004: Esportazione interventi assegnati Modificato per gestire il trasferimento usando AWS
SWA005 Modificato per gestire il trasferimento usando AWS
SWA014: Sincronizzazione attivita' CRM

Modifica alla logica di trasferimento

La gestione della doppia modalita' FTP/AWS e' piu' complicata di quanto ipotizzato. Il problema principale e' che FTP lavora in modalita' "client" (quindi tutto passa attraverso il pc Windows che esegue il programma, ad esempio lo SWA); mentre AWS lo facciamo lavorare sul server.

Riepilogo dei passaggi che potrebbe effettuare un file archiviato, che deve essere inviato allo storage

# Passaggio Operazione FTP AWS (non ottimizzato) AWS (ottimizzato)
1 Il file e' archiviato
2 Estrazione tramite COGU06 Il file viene salvato su EXT-TMP-DIR Il file viene salvato su EXT-TMP-DIR Il file viene salvato su EXT-TMP-DIR
3 COPIAF Il file viene copiato sulla cartella temporanea locale Il file viene copiato sulla cartella temporanea locale
4 FTP (Upload) La cartella temporanea locale deve essere spostata di nuovo sul server
5 FTP (Upload) Viene effettuato l'UPLOAD sulla cartella di destinazione remota Viene effettuato l'UPLOAD dalla cartella sul server Viene effettuato l'UPLOAD dalla cartella sul server
6 FTP (Cleanuplocal) La cartella locale viene ripulita La cartella locale viene ripulita
7 FTP (Cleanuplocal) La cartella sul server viene pulita La cartella sul server viene pulita
Numero totale di passaggi del file 3 4 2

La modalita' "AWS (ottimizzato)" prevede modifiche maggiori a ciascun programma interessato.

Archiviazione documentale su AWS

Per rendere piu' semplice e lineare la gestione dell'archiviazione documentale, su Area e su Web, e' stata implementata una nuova modalita' di archiviazione che chiameremo "Archiviazione remota".

Dal punto di vista puramente tecnico la soluzione e' abbastanza semplice, perche' consiste nel fare in modo che COGU06 invece di interfacciarsi con una cartella locale (la "Sezione"), lo faccia con una cartella remota attraverso il programma "FTP".

Le strade possibili sono: - Cambiare la logica su APP: La APP dovrebbe trovare i documenti interessati usando le logiche di COGU06 (documento interno, sezione, pagine, ecc). - Cambiare la logica su AREA: Per le classi di documento gia' sincronizzate su KPN, si dovrebbe esportare i documenti in una posizione diversa da quella della sezione. E' sicuramente la soluzione piu' pulita.

Caso particolare: la galleria immagini su intervento e' la sola tipologia di documento archiviato che e' gestita anche attraverso una tabella di indice: ARPCHIMG.

Query e utilita' di pulizia

Elenco delle operazioni da effettuare se e' necessario effettuare una pulizia parziale di un ambiente operativo.

Comando per pulizia archivi di contabilita'

Procedura per la pulizia dei movimenti contabili/Fatturazione attiva e passiva: * documenti contabili * fatture attive e passive

NB: La procedura va eseguita con i motori di aggiornamento in stand-by.

Tabelle AREA

echo off
echo ** Attenzione, cancellazione archivi contabilita'. Prosegui?
pause
echo ** Attenzione, cancellazione archivi contabilita'. Prosegui?
pause
echo ** Salvo la situazione attuale
copy * salva-20191212\*
pause
del cogariva*
del cogpnonc*
del cogslpco*
del cogfattu
del cogracco*
del cogritac*
del cogmovcc*
del cogapall*
del cogftrifr*
del cogstfat*
del cogftrag*
del cogparti*
del cogmovpa*
del cogltint*
del cogincbo*
del cogcfspr*
del cogfcons*
del cogsolmv*
del cogpadoc*
del cogsolts*
del cogrisco*
del cogrliva*
del cogliqui*
del cogariv2*
del cogfatt2*
del cogftets*
del cogftedt*
del cogfteiv*
del cogftedp*
del pno21*
del pno22*
del pno23*
del nutariba
del nutsriba*
del nutscade*
del nutdagir*
del nutribnc*

Poi si dovranno resettare i numeratori e la tabella di memoria degli esercizi contabili.


Estratto da documentazione interna ClickUp