Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Convertire i file mainframe dal EBCDIC formato al formato delimitato da caratteri in ASCII Amazon S3 utilizzando Lambda AWS
Creato da Luis Gustavo Dantas () AWS
Archivio di codice: Mainframe Data Utilities | Ambiente: PoC o pilota | Fonte: file IBM EBCDIC |
Destinazione: file delimitati ASCII | Tipo R: Replatform | Carico di lavoro: IBM |
Tecnologie: mainframe | AWSservizi: AWS CloudShell; AWS Lambda; Amazon S3; Amazon CloudWatch |
Riepilogo
Questo modello mostra come avviare una funzione AWS Lambda che converte automaticamente i file mainframe EBCDIC (Extended Binary Coded Decimal Interchange Code) in file delimitati da caratteri ASCII (American Standard Code for Information Interchange). La funzione Lambda viene eseguita dopo che i ASCII file sono stati caricati in un bucket Amazon Simple Storage Service (Amazon S3). Dopo la conversione dei file, puoi leggere i ASCII file su carichi di lavoro basati su x86 o caricare i file in database moderni.
L'approccio alla conversione dei file illustrato in questo modello può aiutarvi a superare le sfide legate all'utilizzo dei EBCDIC file in ambienti moderni. I file codificati in EBCDIC spesso contengono dati rappresentati in formato binario o decimale compresso e i campi sono a lunghezza fissa. Queste caratteristiche creano ostacoli perché i carichi di lavoro o gli ambienti distribuiti moderni basati su x86 generalmente funzionano con ASCII dati codificati e non possono elaborare file. EBCDIC
Prerequisiti e limitazioni
Prerequisiti
Un account attivo AWS
Un bucket S3
Un utente di AWS Identity and Access Management (IAM) con autorizzazioni amministrative
AWS CloudShell
Python 3.8.0
o successivo Un file flat codificato in EBCDIC e la relativa struttura di dati corrispondente in un quaderno comune in linguaggio orientato al business () COBOL
Nota: questo modello utilizza un file di esempio (. EBCDIC CLIENT
Limitazioni
COBOLI quaderni di solito contengono più definizioni di layout. Il mainframe-data-utilities
progetto può analizzare questo tipo di quaderno ma non può dedurre quale layout prendere in considerazione per la conversione dei dati. Questo perché i quaderni non seguono questa logica (che invece rimane nei programmi). COBOL Di conseguenza, è necessario configurare manualmente le regole per la selezione dei layout dopo aver analizzato il quaderno. Questo modello è soggetto alle quote Lambda.
Architettura
Stack tecnologico di origine
IBMz/OS, IBM i e altri sistemi EBCDIC
File sequenziali con dati codificati in EBCDIC (come Db2 unloads) IBM
COBOLquaderno
stack tecnologico Target
Amazon S3
Notifica degli eventi di Amazon S3
IAM
Funzione Lambda
Python 3.8 o successivo
Utilità per i dati del mainframe
JSONmetadati
file delimitati da caratteri ASCII
Architettura di destinazione
Il diagramma seguente mostra un'architettura per la conversione dei file mainframe in EBCDIC file. ASCII
Il diagramma mostra il flusso di lavoro seguente:
L'utente esegue lo script di analisi del copybook per convertire il COBOL quaderno in un file. JSON
L'utente carica i metadati in un bucket S3JSON. Ciò rende i metadati leggibili dalla funzione Lambda di conversione dei dati.
L'utente o un processo automatizzato carica il EBCDIC file nel bucket S3.
L'evento di notifica S3 attiva la funzione Lambda di conversione dei dati.
AWSverifica le autorizzazioni di lettura/scrittura del bucket S3 per la funzione Lambda.
Lambda legge il file dal bucket S3 e lo converte localmente da a. EBCDIC ASCII
Lambda registra lo stato del processo in Amazon. CloudWatch
Lambda riscrive il ASCII file su Amazon S3.
Nota: lo script di analisi dei copybook viene eseguito solo una volta, dopo aver convertito i metadati in un bucket S3 JSON e quindi caricato tali dati in un bucket S3. Dopo la conversione iniziale, qualsiasi EBCDIC file che utilizza lo stesso JSON file caricato nel bucket S3 utilizzerà gli stessi metadati.
Strumenti
AWSstrumenti
Amazon ti CloudWatch aiuta a monitorare i parametri delle tue AWS risorse e delle applicazioni su cui esegui AWS in tempo reale.
Amazon Simple Storage Service (Amazon S3) è un servizio di archiviazione degli oggetti basato sul cloud che consente di archiviare, proteggere e recuperare qualsiasi quantità di dati.
AWS CloudShellè una shell basata su browser che puoi utilizzare per gestire AWS i servizi utilizzando l'interfaccia a riga di AWS comando (AWSCLI) e una gamma di strumenti di sviluppo preinstallati.
AWSIdentity and Access Management (IAM) consente di gestire in modo sicuro l'accesso alle AWS risorse controllando chi è autenticato e autorizzato a utilizzarle.
AWSLambda è un servizio di elaborazione che ti aiuta a eseguire il codice senza dover effettuare il provisioning o gestire i server. Lambda esegue il codice solo quando necessario e si ridimensiona automaticamente, quindi paghi solo per il tempo di elaborazione che utilizzi.
Altri strumenti
Codice
Il codice per questo pattern è disponibile nel repository. GitHub mainframe-data-utilities
Best practice
Considerate le seguenti best practice:
Imposta le autorizzazioni richieste a livello di Amazon Resource Name (ARN).
Concedi sempre le autorizzazioni con il minimo privilegio per le politiche. IAM Per ulteriori informazioni, consulta le migliori pratiche di sicurezza nella documentazione. IAM IAM
Epiche
Attività | Descrizione | Competenze richieste |
---|---|---|
Crea le variabili d'ambiente. | Copiate le seguenti variabili di ambiente <placeholder>in un editor di testo, quindi sostituite i valori dell'esempio seguente con i valori delle risorse:
Nota: creerai riferimenti al tuo bucket S3, all'AWSaccount e alla AWS regione in un secondo momento. Per definire le variabili di ambiente, apri la CloudShell console Nota: è necessario ripetere questo passaggio ogni volta che la CloudShell sessione viene riavviata. | Generale AWS |
Crea una cartella di lavoro. | Per semplificare il processo di pulizia delle risorse in un secondo momento, crea una cartella di lavoro CloudShell eseguendo il seguente comando:
Nota: è necessario modificare la directory nella directory di lavoro ( | Generale AWS |
Attività | Descrizione | Competenze richieste |
---|---|---|
Crea una politica di fiducia per la funzione Lambda. | Il EBCDIC convertitore funziona con una funzione Lambda. La funzione deve avere un IAM ruolo. Prima di creare il IAM ruolo, è necessario definire un documento sulla politica di fiducia che consenta alle risorse di assumere tale politica. Dalla cartella CloudShell di lavoro, create un documento di policy eseguendo il comando seguente:
| Generale AWS |
Crea il IAM ruolo per la conversione Lambda. | Per creare un IAM ruolo, esegui il seguente AWS CLI comando dalla cartella di CloudShell lavoro:
| Generale AWS |
Crea il documento IAM di policy per la funzione Lambda. | La funzione Lambda deve disporre dell'accesso in lettura/scrittura al bucket S3 e delle autorizzazioni di scrittura per Amazon Logs. CloudWatch Per creare una IAM policy, esegui il seguente comando dalla cartella di lavoro: CloudShell
| Generale AWS |
Allega il documento di IAM policy al IAM ruolo. | Per allegare la IAM policy al IAM ruolo, esegui il seguente comando dalla tua cartella CloudShell di lavoro:
| Generale AWS |
Attività | Descrizione | Competenze richieste |
---|---|---|
Scarica il codice sorgente della EBCDIC conversione. | Dalla cartella CloudShell di lavoro, esegui il seguente comando per scaricare il codice mainframe-data-utilities sorgente da GitHub:
| Generale AWS |
Crea il ZIP pacchetto. | Dalla cartella di CloudShell lavoro, esegui il comando seguente per creare il ZIP pacchetto che crea la funzione Lambda per EBCDIC la conversione:
| Generale AWS |
Creazione della funzione Lambda | Dalla cartella di CloudShell lavoro, esegui il seguente comando per creare la funzione Lambda per EBCDIC la conversione:
Nota: il layout della variabile di ambiente indica alla funzione Lambda dove risiedono i JSON metadati. | Generale AWS |
Crea la politica basata sulle risorse per la funzione Lambda. | Dalla cartella di CloudShell lavoro, esegui il comando seguente per consentire alla notifica degli eventi di Amazon S3 di attivare la funzione Lambda per la conversione: EBCDIC
| Generale AWS |
Attività | Descrizione | Competenze richieste |
---|---|---|
Crea il documento di configurazione per la notifica degli eventi di Amazon S3. | La notifica degli eventi di Amazon S3 avvia la funzione di conversione EBCDIC Lambda quando i file vengono inseriti nella cartella di input. Dalla cartella di CloudShell lavoro, esegui il seguente comando per creare il JSON documento per la notifica degli eventi di Amazon S3:
| Generale AWS |
Crea la notifica degli eventi di Amazon S3. | Dalla cartella di CloudShell lavoro, esegui il seguente comando per creare la notifica degli eventi di Amazon S3:
| Generale AWS |
Attività | Descrizione | Competenze richieste |
---|---|---|
Analizza il COBOL quaderno. | Dalla cartella di CloudShell lavoro, esegui il seguente comando per analizzare un COBOL quaderno di esempio in un JSON file (che definisce come leggere e suddividere correttamente il file di dati):
| Generale AWS |
Aggiungi la regola di trasformazione. | Il file di dati di esempio e il COBOL quaderno corrispondente sono un file a più layout. Ciò significa che la conversione deve suddividere i dati in base a determinate regole. In questo caso, i byte nelle posizioni 3 e 4 in ogni riga definiscono il layout. Dalla cartella CloudShell di lavoro, modificate il
| GeneraleAWS, IBM Mainframe, Cobol |
Carica i JSON metadati nel bucket S3. | Dalla cartella di CloudShell lavoro, esegui il seguente AWS CLI comando per caricare i JSON metadati nel tuo bucket S3:
| Generale AWS |
Attività | Descrizione | Competenze richieste |
---|---|---|
Invia il EBCDIC file al bucket S3. | Dalla cartella di CloudShell lavoro, esegui il seguente comando per inviare il EBCDIC file al bucket S3:
Nota: ti consigliamo di impostare cartelle diverse per i file di input (EBCDIC) e output (ASCII) per evitare di richiamare nuovamente la funzione di conversione Lambda quando il ASCII file viene caricato nel bucket S3. | Generale AWS |
Controlla l'output. | Dalla cartella di CloudShell lavoro, esegui il seguente comando per verificare se il ASCII file è generato nel tuo bucket S3:
Nota: la conversione dei dati può richiedere diversi secondi. Ti consigliamo di controllare il ASCII file alcune volte. Una volta che il ASCII file è disponibile, esegui il seguente comando per scaricare il file dal bucket S3 nella cartella corrente:
Controlla il contenuto del ASCII file:
| Generale AWS |
Attività | Descrizione | Competenze richieste |
---|---|---|
(Facoltativo) Prepara le variabili e la cartella. | Se perdete la connessione con CloudShell, riconnettetevi ed eseguite il seguente comando per spostare la directory nella cartella di lavoro:
Assicuratevi che le variabili di ambiente siano definite:
| Generale AWS |
Rimuovi la configurazione di notifica per il bucket. | Dalla cartella di CloudShell lavoro, esegui il seguente comando per rimuovere la configurazione di notifica degli eventi di Amazon S3:
| Generale AWS |
Elimina la funzione Lambda. | Dalla cartella di CloudShell lavoro, esegui il seguente comando per eliminare la funzione Lambda per il EBCDIC convertitore:
| Generale AWS |
Eliminare il IAM ruolo e la politica. | Dalla cartella di CloudShell lavoro, esegui il comando seguente per rimuovere il ruolo e la politica del EBCDIC convertitore:
| Generale AWS |
Elimina i file generati nel bucket S3. | Dalla cartella di CloudShell lavoro, esegui il seguente comando per eliminare i file generati nel bucket S3:
| Generale AWS |
Eliminare la cartella di lavoro. | Dalla cartella di CloudShell lavoro, esegui il seguente comando per rimuovere
| Generale AWS |
Risorse correlate
Utilità README per dati mainframe
() GitHub EBCDICa ASCII
(IBMdocumentazione) COBOL
(IBMdocumentazione) Utilizzo di un trigger Amazon S3 per richiamare una funzione Lambda (documentazione Lambda) AWS