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à.
Converti i file mainframe dal formato EBCDIC al formato ASCII delimitato da caratteri in Amazon S3 utilizzando AWS Lambda
Luis Gustavo Dantas, Amazon Web Services
Riepilogo
Questo modello mostra come avviare una AWS Lambda funzione che converte automaticamente i file EBCDIC (Extended Binary Coded Decimal Interchange Code) del mainframe in file ASCII (American Standard Code for Information Interchange) delimitati da caratteri. La funzione Lambda viene eseguita dopo il caricamento dei file ASCII in un bucket Amazon Simple Storage Service (Amazon S3). Dopo la conversione dei file, puoi leggere i file ASCII 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 file EBCDIC in ambienti moderni. I file codificati in EBCDIC contengono spesso 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 dati con codifica ASCII e non sono in grado di elaborare file EBCDIC.
Prerequisiti e limitazioni
Prerequisiti
Un attivo Account AWS
Un bucket Amazon S3
Un utente 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 struttura dati corrispondente in un quaderno COBOL (Common Business-Oriented Language)
Nota
Limitazioni
I quaderni COBOL 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 rimane invece 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
IBM z/OS, IBM i e altri sistemi EBCDIC
File sequenziali con dati codificati in EBCDIC (come IBM Db2 unloads)
Quaderno COBOL
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
Metadati JSON
File ASCII delimitati da caratteri
Architettura di Target
Il diagramma seguente mostra un'architettura per la conversione dei file EBCDIC mainframe in file ASCII.

Il diagramma mostra il flusso di lavoro seguente:
L'utente esegue lo script di analisi dei copybook, che converte il quaderno COBOL in un file JSON.
L'utente carica i metadati JSON in un bucket Amazon S3. Ciò rende i metadati leggibili dalla funzione Lambda di conversione dei dati.
L'utente o un processo automatizzato carica il file EBCDIC nel bucket Amazon S3.
L'evento di notifica di Amazon S3 attiva la funzione Lambda di conversione dei dati.
AWS verifica le autorizzazioni di lettura/scrittura del bucket Amazon S3 per la funzione Lambda.
Lambda legge il file dal bucket Amazon S3 e lo converte localmente da EBCDIC in ASCII.
Lambda registra lo stato del processo in Amazon. CloudWatch
Lambda riscrive il file ASCII su Amazon S3.
Nota
Lo script di analisi dei copybook viene eseguito una sola volta per eseguire la conversione dei metadati in formato JSON, che viene successivamente archiviato in un bucket Amazon S3. Dopo la conversione iniziale, tutti i file EBCDIC successivi che fanno riferimento allo stesso file JSON nel bucket Amazon S3 utilizzeranno la configurazione dei metadati esistente.
Strumenti
Servizi AWS
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 Servizi AWS utilizzando AWS Command Line Interface (AWS CLI) e una gamma di strumenti di sviluppo preinstallati.
AWS Identity and Access Management (IAM) ti aiuta a gestire in modo sicuro l'accesso alle tue AWS risorse controllando chi è autenticato e autorizzato a utilizzarle.
AWS Lambda è un servizio di calcolo che consente di eseguire il codice senza gestire i server o effettuarne il provisioning. 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 privilegi minimi per le policy IAM. Per ulteriori informazioni, consulta le best practice di sicurezza in IAM nella documentazione IAM.
Epiche
| Attività | Descrizione | Competenze richieste |
|---|---|---|
Creare le variabili di ambiente. | Copiate le seguenti variabili di ambiente in un editor di testo, quindi sostituite i
NotaCreerai riferimenti al tuo bucket Amazon S3 e versioni successive Account AWS. Regione AWS Per definire le variabili di ambiente, apri la CloudShell console NotaÈ necessario ripetere questo passaggio ogni volta che la CloudShell sessione viene riavviata. | Informazioni generali su 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 ( | Informazioni generali su AWS |
| Attività | Descrizione | Competenze richieste |
|---|---|---|
Crea una politica di fiducia per la funzione Lambda. | Il convertitore EBCDIC funziona con una funzione Lambda. La funzione deve avere un ruolo IAM. Prima di creare il ruolo IAM, è necessario definire un documento sulla politica di fiducia che consenta alle risorse di assumere tale politica. Dalla cartella CloudShell di lavoro, crea un documento di policy eseguendo il seguente comando:
| Informazioni generali su AWS |
Crea il ruolo IAM per la conversione Lambda. | Per creare un ruolo IAM, esegui il seguente AWS CLI comando dalla cartella di CloudShell lavoro:
| Informazioni generali su AWS |
Crea il documento di policy IAM per la funzione Lambda. | La funzione Lambda deve disporre dell'accesso in lettura/scrittura al bucket Amazon S3 e delle autorizzazioni di scrittura per Amazon Logs. CloudWatch Per creare una policy IAM, esegui il seguente comando dalla cartella di lavoro: CloudShell
| Informazioni generali su AWS |
Allega il documento sulla policy IAM al ruolo IAM. | Per allegare la policy IAM al ruolo IAM, inserisci il seguente comando dalla tua cartella di CloudShell lavoro:
| Informazioni generali su AWS |
| Attività | Descrizione | Competenze richieste |
|---|---|---|
Scarica il codice sorgente della conversione EBCDIC. | Dalla cartella CloudShell di lavoro, esegui il seguente comando per scaricare il codice mainframe-data-utilities sorgente da: GitHub
| Informazioni generali su AWS |
Crea il pacchetto ZIP. | Dalla cartella di CloudShell lavoro, immettete il seguente comando per creare il pacchetto ZIP che crea la funzione Lambda per la conversione EBCDIC:
| Informazioni generali su AWS |
Creazione della funzione Lambda | Dalla cartella di CloudShell lavoro, immettete il seguente comando per creare la funzione Lambda per la conversione EBCDIC:
NotaIl layout della variabile di ambiente indica alla funzione Lambda dove risiedono i metadati JSON. | Informazioni generali su AWS |
Crea la politica basata sulle risorse per la funzione Lambda. | Dalla cartella di CloudShell lavoro, inserisci il seguente comando per consentire alla notifica degli eventi di Amazon S3 di attivare la funzione Lambda per la conversione EBCDIC:
| Informazioni generali su 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 Lambda di conversione EBCDIC quando i file vengono inseriti nella cartella di input. Dalla cartella di CloudShell lavoro, esegui il seguente comando per creare il documento JSON per la notifica degli eventi di Amazon S3:
| Informazioni generali su AWS |
Crea la notifica degli eventi di Amazon S3. | Dalla cartella di CloudShell lavoro, inserisci il seguente comando per creare la notifica degli eventi di Amazon S3:
| Informazioni generali su AWS |
| Attività | Descrizione | Competenze richieste |
|---|---|---|
Analizza il quaderno COBOL. | Dalla cartella di CloudShell lavoro, immettete il seguente comando per analizzare un quaderno COBOL di esempio in un file JSON (che definisce come leggere e suddividere correttamente il file di dati):
| Informazioni generali su AWS |
Aggiungi la regola di trasformazione. | Il file di dati di esempio e il corrispondente quaderno COBOL 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
| Informazioni generali su AWS, mainframe IBM, Cobol |
Carica i metadati JSON nel bucket Amazon S3. | Dalla cartella di CloudShell lavoro, inserisci il seguente AWS CLI comando per caricare i metadati JSON nel tuo bucket Amazon S3:
| Informazioni generali su AWS |
| Attività | Descrizione | Competenze richieste |
|---|---|---|
Invia il file EBCDIC al bucket Amazon S3. | Dalla cartella di CloudShell lavoro, inserisci il seguente comando per inviare il file EBCDIC al bucket Amazon S3:
NotaTi consigliamo di impostare cartelle diverse per i file di input (EBCDIC) e di output (ASCII) per evitare di richiamare nuovamente la funzione di conversione Lambda quando il file ASCII viene caricato nel bucket Amazon S3. | Informazioni generali su AWS |
Controlla l'output. | Dalla cartella di CloudShell lavoro, inserisci il seguente comando per verificare se il file ASCII è generato nel tuo bucket Amazon S3:
NotaLa conversione dei dati può richiedere diversi secondi. Ti consigliamo di verificare la presenza del file ASCII alcune volte. Una volta che il file ASCII è disponibile, inserisci il seguente comando per visualizzare il contenuto del file convertito nel bucket Amazon S3. Se necessario, puoi scaricarlo o utilizzarlo direttamente dal bucket Amazon S3:
Controlla il contenuto del file ASCII:
| Informazioni generali su AWS |
| Attività | Descrizione | Competenze richieste |
|---|---|---|
(Facoltativo) Prepara le variabili e la cartella. | Se perdete la connessione con CloudShell, riconnettetevi e immettete il seguente comando per spostare la directory nella cartella di lavoro:
Assicuratevi che le variabili di ambiente siano definite:
| Informazioni generali su 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:
| Informazioni generali su AWS |
Elimina la funzione Lambda. | Dalla cartella di CloudShell lavoro, immettete il seguente comando per eliminare la funzione Lambda per il convertitore EBCDIC:
| Informazioni generali su AWS |
Elimina il ruolo e la policy IAM. | Dalla cartella di CloudShell lavoro, inserisci il seguente comando per rimuovere il ruolo e la politica del convertitore EBCDIC:
| Informazioni generali su AWS |
Elimina i file generati nel bucket Amazon S3. | Dalla cartella di CloudShell lavoro, inserisci il seguente comando per eliminare i file generati nel bucket Amazon S3:
| Informazioni generali su AWS |
Elimina la cartella di lavoro. | Dalla cartella di CloudShell lavoro, immettete il seguente comando per
| Informazioni generali su AWS |
Risorse correlate
Utilità per dati mainframe README
() GitHub Da EBCDIC
ad ASCII (documentazione IBM) COBOL
(documentazione IBM) Utilizzo di un trigger Amazon S3 per richiamare una funzione Lambda (documentazione)AWS Lambda