Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Convertissez des fichiers mainframe du format EBCDIC au format ASCII délimité par des caractères dans Amazon S3 en utilisant AWS Lambda
Luis Gustavo Dantas, Amazon Web Services
Récapitulatif
Ce modèle explique comment lancer une AWS Lambda fonction qui convertit automatiquement les fichiers EBCDIC (Extended Binary Coded Decimal Interchange Code) du mainframe en fichiers ASCII (American Standard Code for Information Interchange) séparés par des caractères. La fonction Lambda s'exécute une fois les fichiers ASCII chargés dans un bucket Amazon Simple Storage Service (Amazon S3). Après la conversion des fichiers, vous pouvez lire les fichiers ASCII sur des charges de travail basées sur x86 ou charger les fichiers dans des bases de données modernes.
L'approche de conversion de fichiers illustrée dans ce modèle peut vous aider à surmonter les défis liés à l'utilisation de fichiers EBCDIC dans des environnements modernes. Les fichiers codés en EBCDIC contiennent souvent des données représentées dans un format binaire ou décimal compressé, et les champs sont de longueur fixe. Ces caractéristiques créent des obstacles car les charges de travail modernes basées sur le x86 ou les environnements distribués fonctionnent généralement avec des données codées en ASCII et ne peuvent pas traiter les fichiers EBCDIC.
Conditions préalables et limitations
Prérequis
Un actif Compte AWS
Un compartiment Amazon S3
Un utilisateur AWS Identity and Access Management (IAM) doté d'autorisations administratives
AWS CloudShell
Un fichier plat codé en EBCDIC et sa structure de données correspondante dans un cahier COBOL (Common Business Oriented Language)
Note
Limites
Les cahiers COBOL contiennent généralement plusieurs définitions de mise en page. Le mainframe-data-utilities
projet peut analyser ce type de cahier mais ne peut pas déduire quelle mise en page prendre en compte lors de la conversion des données. Cela est dû au fait que les cahiers ne tiennent pas compte de cette logique (qui reste dans les programmes COBOL à la place). Par conséquent, vous devez configurer manuellement les règles de sélection des mises en page après avoir analysé le cahier. Ce modèle est soumis à des quotas Lambda.
Architecture
Pile technologique source
IBM z/OS, IBM i et autres systèmes EBCDIC
Fichiers séquentiels avec données codées en EBCDIC (tels que les déchargements IBM Db2)
Cahier COBOL
Pile technologique cible
Amazon S3
Notification d'événement Amazon S3
IAM
fonction Lambda
Python 3.8 ou version ultérieure
Utilitaires de données du mainframe
métadonnées JSON
Fichiers ASCII délimités par des caractères
Architecture cible
Le schéma suivant montre une architecture permettant de convertir les fichiers EBCDIC du mainframe en fichiers ASCII.

Le schéma suivant illustre le flux de travail suivant :
L'utilisateur exécute le script d'analyse du cahier, qui convertit le cahier COBOL en fichier JSON.
L'utilisateur télécharge les métadonnées JSON dans un compartiment Amazon S3. Cela rend les métadonnées lisibles par la fonction Lambda de conversion de données.
L'utilisateur ou un processus automatisé télécharge le fichier EBCDIC dans le compartiment Amazon S3.
L'événement de notification Amazon S3 déclenche la fonction Lambda de conversion de données.
AWS vérifie les autorisations de lecture/écriture du compartiment Amazon S3 pour la fonction Lambda.
Lambda lit le fichier depuis le compartiment Amazon S3 et le convertit localement de l'EBCDIC en ASCII.
Lambda enregistre l'état du processus sur Amazon. CloudWatch
Lambda réécrit le fichier ASCII sur Amazon S3.
Note
Le script d'analyse du copybook s'exécute une seule fois pour effectuer la conversion des métadonnées au format JSON, qui sont ensuite stockées dans un compartiment Amazon S3. Après la conversion initiale, tous les fichiers EBCDIC suivants qui font référence au même fichier JSON dans le compartiment Amazon S3 utiliseront la configuration de métadonnées existante.
Outils
Services AWS
Amazon vous CloudWatch aide à surveiller les indicateurs de vos AWS ressources et des applications que vous utilisez AWS en temps réel.
Amazon Simple Storage Service (Amazon S3) est un service de stockage d'objets basé sur le cloud qui vous permet de stocker, de protéger et de récupérer n'importe quel volume de données.
AWS CloudShellest un shell basé sur un navigateur que vous pouvez utiliser pour gérer à l'aide Services AWS de the AWS Command Line Interface (AWS CLI) et d'une gamme d'outils de développement préinstallés.
AWS Identity and Access Management (IAM) vous aide à gérer en toute sécurité l'accès à vos AWS ressources en contrôlant qui est authentifié et autorisé à les utiliser.
AWS Lambda est un service de calcul qui vous aide à exécuter du code sans avoir à allouer ni à gérer des serveurs. Lambda exécute votre code uniquement lorsque cela est nécessaire et évolue automatiquement, de sorte que vous ne payez que pour le temps de calcul que vous utilisez.
Autres outils
Code
Le code de ce modèle est disponible dans le GitHub mainframe-data-utilities
Bonnes pratiques
Tenez compte des meilleures pratiques suivantes :
Définissez les autorisations requises au niveau Amazon Resource Name (ARN).
Accordez toujours des autorisations de moindre privilège pour les politiques IAM. Pour plus d'informations, consultez la section Bonnes pratiques en matière de sécurité dans IAM dans la documentation IAM.
Épopées
| Tâche | Description | Compétences requises |
|---|---|---|
Créez les variables d'environnement. | Copiez les variables d'environnement suivantes dans un éditeur de texte, puis remplacez les
NoteVous allez créer des références à votre compartiment Amazon S3 Compte AWS, et à des Région AWS versions ultérieures. Pour définir des variables d'environnement, ouvrez la CloudShell console NoteVous devez répéter cette étape chaque fois que la CloudShell session redémarre. | AWS général |
Créez un dossier de travail. | Pour simplifier ultérieurement le processus de nettoyage des ressources, créez un dossier de travail en CloudShell exécutant la commande suivante :
NoteVous devez remplacer le répertoire par le répertoire de travail ( | AWS général |
| Tâche | Description | Compétences requises |
|---|---|---|
Créez une politique de confiance pour la fonction Lambda. | Le convertisseur EBCDIC fonctionne selon une fonction Lambda. La fonction doit avoir un rôle IAM. Avant de créer le rôle IAM, vous devez définir un document de politique de confiance qui permet aux ressources d'assumer cette politique. À partir du dossier de CloudShell travail, créez un document de politique en exécutant la commande suivante :
| AWS général |
Créez le rôle IAM pour la conversion Lambda. | Pour créer un rôle IAM, exécutez la AWS CLI commande suivante depuis le dossier de CloudShell travail :
| AWS général |
Créez le document de politique IAM pour la fonction Lambda. | La fonction Lambda doit disposer d'un accès en lecture-écriture au compartiment Amazon S3 et d'autorisations d'écriture pour Amazon Logs. CloudWatch Pour créer une politique IAM, exécutez la commande suivante depuis le dossier de CloudShell travail :
| AWS général |
Joignez le document de politique IAM au rôle IAM. | Pour associer la politique IAM au rôle IAM, entrez la commande suivante depuis votre dossier de CloudShell travail :
| AWS général |
| Tâche | Description | Compétences requises |
|---|---|---|
Téléchargez le code source de conversion EBCDIC. | Dans le dossier de CloudShell travail, exécutez la commande suivante pour télécharger le code mainframe-data-utilities source depuis GitHub :
| AWS général |
Créez le package ZIP. | Dans le dossier de CloudShell travail, entrez la commande suivante pour créer le package ZIP qui crée la fonction Lambda pour la conversion EBCDIC :
| AWS général |
Créez la fonction Lambda. | Dans le dossier de CloudShell travail, entrez la commande suivante pour créer la fonction Lambda pour la conversion EBCDIC :
NoteLa disposition des variables d'environnement indique à la fonction Lambda où se trouvent les métadonnées JSON. | AWS général |
Créez la politique basée sur les ressources pour la fonction Lambda. | Dans le dossier de CloudShell travail, entrez la commande suivante pour permettre à votre notification d'événement Amazon S3 de déclencher la fonction Lambda pour la conversion EBCDIC :
| AWS général |
| Tâche | Description | Compétences requises |
|---|---|---|
Créez le document de configuration pour la notification d'événement Amazon S3. | La notification d'événement Amazon S3 lance la fonction Lambda de conversion EBCDIC lorsque des fichiers sont placés dans le dossier d'entrée. À partir du dossier de CloudShell travail, exécutez la commande suivante pour créer le document JSON pour la notification d'événement Amazon S3 :
| AWS général |
Créez la notification d'événement Amazon S3. | Dans le dossier de CloudShell travail, entrez la commande suivante pour créer la notification d'événement Amazon S3 :
| AWS général |
| Tâche | Description | Compétences requises |
|---|---|---|
Analysez le cahier COBOL. | Dans le dossier de CloudShell travail, entrez la commande suivante pour analyser un exemple de cahier COBOL dans un fichier JSON (qui définit comment lire et découper correctement le fichier de données) :
| AWS général |
Ajoutez la règle de transformation. | L'exemple de fichier de données et le cahier COBOL correspondant sont des fichiers à mises en page multiples. Cela signifie que la conversion doit découper les données en fonction de certaines règles. Dans ce cas, les octets situés aux positions 3 et 4 de chaque ligne définissent la mise en page. Dans le dossier de CloudShell travail, modifiez le
| AWS général, IBM Mainframe, Cobol |
Téléchargez les métadonnées JSON dans le compartiment Amazon S3. | Dans le dossier de CloudShell travail, entrez la AWS CLI commande suivante pour télécharger les métadonnées JSON dans votre compartiment Amazon S3 :
| AWS général |
| Tâche | Description | Compétences requises |
|---|---|---|
Envoyez le fichier EBCDIC dans le compartiment Amazon S3. | Dans le dossier de CloudShell travail, entrez la commande suivante pour envoyer le fichier EBCDIC vers le compartiment Amazon S3 :
NoteNous vous recommandons de définir des dossiers différents pour les fichiers d'entrée (EBCDIC) et de sortie (ASCII) afin d'éviter d'appeler à nouveau la fonction de conversion Lambda lorsque le fichier ASCII est chargé dans le compartiment Amazon S3. | AWS général |
Vérifiez la sortie. | Dans le dossier de CloudShell travail, entrez la commande suivante pour vérifier si le fichier ASCII est généré dans votre compartiment Amazon S3 :
NoteLa conversion des données peut prendre plusieurs secondes. Nous vous recommandons de vérifier la présence du fichier ASCII à quelques reprises. Une fois le fichier ASCII disponible, entrez la commande suivante pour afficher le contenu du fichier converti dans le compartiment Amazon S3. Si nécessaire, vous pouvez le télécharger ou l'utiliser directement depuis le compartiment Amazon S3 :
Vérifiez le contenu du fichier ASCII :
| AWS général |
| Tâche | Description | Compétences requises |
|---|---|---|
(Facultatif) Préparez les variables et le dossier. | Si vous perdez la connexion avec CloudShell, reconnectez-vous, puis entrez la commande suivante pour transformer le répertoire en dossier de travail :
Assurez-vous que les variables d'environnement sont définies :
| AWS général |
Supprimez la configuration de notification pour le compartiment. | Depuis le dossier de CloudShell travail, exécutez la commande suivante pour supprimer la configuration des notifications d'événements Amazon S3 :
| AWS général |
Supprimez la fonction Lambda. | Dans le dossier de CloudShell travail, entrez la commande suivante pour supprimer la fonction Lambda du convertisseur EBCDIC :
| AWS général |
Supprimez le rôle et la politique IAM. | Dans le dossier de CloudShell travail, entrez la commande suivante pour supprimer le rôle et la politique du convertisseur EBCDIC :
| AWS général |
Supprimez les fichiers générés dans le compartiment Amazon S3. | Dans le dossier de CloudShell travail, entrez la commande suivante pour supprimer les fichiers générés dans le compartiment Amazon S3 :
| AWS général |
Supprimez le dossier de travail. | Dans le dossier de CloudShell travail, entrez la commande suivante pour supprimer
| AWS général |
Ressources connexes
Utilitaires de données pour ordinateurs centraux README
() GitHub Le jeu de caractères EBCDIC
(documentation IBM) EBCDIC vers ASCII
(documentation IBM) COBOL
(documentation IBM) Utilisation d'un déclencheur Amazon S3 pour appeler une fonction Lambda (documentation)AWS Lambda