Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Konversi file mainframe dari format EBCDIC ke format ASCII yang dibatasi karakter di Amazon S3 menggunakan AWS Lambda
Luis Gustavo Dantas, Amazon Web Services
Ringkasan
Pola ini menunjukkan kepada Anda cara meluncurkan AWS Lambda fungsi yang secara otomatis mengonversi file mainframe Extended Binary Coded Decimal Interchange Code (EBCDIC) ke file American Standard Code for Information Interchange (ASCII) yang dibatasi karakter. Fungsi Lambda berjalan setelah file ASCII diunggah ke bucket Amazon Simple Storage Service (Amazon S3). Setelah konversi file, Anda dapat membaca file ASCII pada beban kerja berbasis x86 atau memuat file ke dalam database modern.
Pendekatan konversi file yang ditunjukkan dalam pola ini dapat membantu Anda mengatasi tantangan bekerja dengan file EBCDIC di lingkungan modern. File yang dikodekan dalam EBCDIC sering berisi data yang direpresentasikan dalam format desimal biner atau dikemas, dan bidang memiliki panjang tetap. Karakteristik ini menciptakan hambatan karena beban kerja berbasis x86 modern atau lingkungan terdistribusi umumnya bekerja dengan data yang dikodekan ASCII dan tidak dapat memproses file EBCDIC.
Prasyarat dan batasan
Prasyarat
Aktif Akun AWS
Bucket Amazon S3
Pengguna AWS Identity and Access Management (IAM) dengan izin administratif
AWS CloudShell
Python 3.8.0
atau yang lebih baru File datar yang dikodekan dalam EBCDIC dan struktur data yang sesuai dalam copybook bahasa berorientasi bisnis umum (COBOL)
catatan
Batasan
Copybook COBOL biasanya memiliki beberapa definisi tata letak. mainframe-data-utilities
Proyek ini dapat mengurai jenis copybook ini tetapi tidak dapat menyimpulkan tata letak mana yang harus dipertimbangkan pada konversi data. Ini karena copybook tidak memegang logika ini (yang tetap pada program COBOL sebagai gantinya). Akibatnya, Anda harus secara manual mengkonfigurasi aturan untuk memilih tata letak setelah Anda mengurai copybook. Pola ini tunduk pada kuota Lambda.
Arsitektur
Tumpukan teknologi sumber
IBM z/OS, IBM i, dan sistem EBCDIC lainnya
File berurutan dengan data yang dikodekan dalam EBCDIC (seperti IBM Db2 unload)
Copybook COBOL
Tumpukan teknologi target
Amazon S3
Pemberitahuan acara Amazon S3
IAM
Fungsi Lambda
Python 3.8 atau yang lebih baru
Utilitas Data Mainframe
Metadata JSON
File ASCII yang dibatasi karakter
Arsitektur target
Diagram berikut menunjukkan arsitektur untuk mengkonversi file mainframe EBCDIC ke file ASCII.

Diagram menunjukkan alur kerja berikut:
Pengguna menjalankan skrip parser copybook, yang mengubah copybook COBOL menjadi file JSON.
Pengguna mengunggah metadata JSON ke bucket Amazon S3. Ini membuat metadata dapat dibaca oleh fungsi Lambda konversi data.
Pengguna atau proses otomatis mengunggah file EBCDIC ke bucket Amazon S3.
Peristiwa notifikasi Amazon S3 memicu fungsi Lambda konversi data.
AWS memverifikasi izin baca-tulis bucket Amazon S3 untuk fungsi Lambda.
Lambda membaca file dari bucket Amazon S3 dan mengonversi file secara lokal dari EBCDIC ke ASCII.
Lambda mencatat status proses di Amazon. CloudWatch
Lambda menulis file ASCII kembali ke Amazon S3.
catatan
Skrip parser copybook berjalan satu kali untuk melakukan konversi metadata ke format JSON, yang kemudian disimpan dalam bucket Amazon S3. Setelah konversi awal, semua file EBCDIC berikutnya yang mereferensikan file JSON yang sama di bucket Amazon S3 akan menggunakan konfigurasi metadata yang ada.
Alat
Layanan AWS
Amazon CloudWatch membantu Anda memantau metrik sumber AWS daya Anda dan aplikasi yang Anda jalankan AWS secara real time.
Amazon Simple Storage Service (Amazon S3) adalah layanan penyimpanan objek berbasis cloud yang membantu Anda menyimpan, melindungi, dan mengambil sejumlah data.
AWS CloudShelladalah shell berbasis browser yang dapat Anda gunakan untuk mengelola Layanan AWS dengan menggunakan AWS Command Line Interface (AWS CLI) dan berbagai alat pengembangan yang sudah diinstal sebelumnya.
AWS Identity and Access Management (IAM) membantu Anda mengelola akses ke AWS sumber daya dengan aman dengan mengontrol siapa yang diautentikasi dan diberi wewenang untuk menggunakannya.
AWS Lambdaadalah layanan komputasi yang membantu Anda menjalankan kode tanpa perlu menyediakan atau mengelola server. Lambda menjalankan kode Anda hanya bila diperlukan dan menskalakan secara otomatis, jadi Anda hanya membayar untuk waktu komputasi yang Anda gunakan.
Alat-alat lainnya
GitHub
adalah layanan hosting kode yang menyediakan alat kolaborasi dan kontrol versi. Python adalah bahasa
pemrograman tingkat tinggi.
Kode
Kode untuk pola ini tersedia di GitHub mainframe-data-utilities
Praktik terbaik
Pertimbangkan praktik terbaik berikut:
Tetapkan izin yang diperlukan di tingkat Amazon Resource Name (ARN).
Selalu berikan izin hak istimewa paling sedikit untuk kebijakan IAM. Untuk informasi selengkapnya, lihat Praktik terbaik keamanan di IAM dalam dokumentasi IAM.
Epik
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Buat variabel lingkungan. | Salin variabel lingkungan berikut ke editor teks, lalu ganti
catatanAnda akan membuat referensi ke bucket Amazon S3 Anda, Akun AWS, dan Wilayah AWS yang lebih baru. Untuk menentukan variabel lingkungan, buka CloudShell konsol catatanAnda harus mengulangi langkah ini setiap kali CloudShell sesi dimulai ulang. | AWS Umum |
Buat folder yang berfungsi. | Untuk menyederhanakan proses pembersihan sumber daya nanti, buat folder kerja CloudShell dengan menjalankan perintah berikut:
catatanAnda harus mengubah direktori ke direktori kerja ( | AWS Umum |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Buat kebijakan kepercayaan untuk fungsi Lambda. | Konverter EBCDIC berjalan dalam fungsi Lambda. Fungsi tersebut harus memiliki peran IAM. Sebelum Anda membuat peran IAM, Anda harus menentukan dokumen kebijakan kepercayaan yang memungkinkan sumber daya untuk mengambil kebijakan tersebut. Dari folder CloudShell kerja, buat dokumen kebijakan dengan menjalankan perintah berikut:
| AWS Umum |
Buat peran IAM untuk konversi Lambda. | Untuk membuat peran IAM, jalankan AWS CLI perintah berikut dari folder CloudShell kerja:
| AWS Umum |
Buat dokumen kebijakan IAM untuk fungsi Lambda. | Fungsi Lambda harus memiliki akses baca-tulis ke bucket Amazon S3 dan izin tulis untuk Amazon Log. CloudWatch Untuk membuat kebijakan IAM, jalankan perintah berikut dari folder CloudShell kerja:
| AWS Umum |
Lampirkan dokumen kebijakan IAM ke peran IAM. | Untuk melampirkan kebijakan IAM ke peran IAM, masukkan perintah berikut dari folder CloudShell kerja Anda:
| AWS Umum |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Unduh kode sumber konversi EBCDIC. | Dari folder CloudShell kerja, jalankan perintah berikut untuk mengunduh kode mainframe-data-utilities sumber dari GitHub:
| AWS Umum |
Buat paket ZIP. | Dari folder CloudShell kerja, masukkan perintah berikut untuk membuat paket ZIP yang membuat fungsi Lambda untuk konversi EBCDIC:
| AWS Umum |
Buat fungsi Lambda. | Dari folder CloudShell kerja, masukkan perintah berikut untuk membuat fungsi Lambda untuk konversi EBCDIC:
catatanTata letak variabel lingkungan memberi tahu fungsi Lambda tempat metadata JSON berada. | AWS Umum |
Buat kebijakan berbasis sumber daya untuk fungsi Lambda. | Dari folder CloudShell kerja, masukkan perintah berikut untuk mengizinkan pemberitahuan peristiwa Amazon S3 Anda memicu fungsi Lambda untuk konversi EBCDIC:
| AWS Umum |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Buat dokumen konfigurasi untuk pemberitahuan acara Amazon S3. | Pemberitahuan peristiwa Amazon S3 memulai fungsi Lambda konversi EBCDIC saat file ditempatkan di folder input. Dari folder CloudShell kerja, jalankan perintah berikut untuk membuat dokumen JSON untuk pemberitahuan acara Amazon S3:
| AWS Umum |
Buat notifikasi acara Amazon S3. | Dari folder CloudShell kerja, masukkan perintah berikut untuk membuat pemberitahuan acara Amazon S3:
| AWS Umum |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Mengurai copybook COBOL. | Dari folder CloudShell kerja, masukkan perintah berikut untuk mengurai contoh copybook COBOL ke dalam file JSON (yang mendefinisikan cara membaca dan mengiris file data dengan benar):
| AWS Umum |
Tambahkan aturan transformasi. | File data sampel dan copybook COBOL yang sesuai adalah file multi-tata letak. Ini berarti bahwa konversi harus mengiris data berdasarkan aturan tertentu. Dalam hal ini, byte pada posisi 3 dan 4 di setiap baris menentukan tata letak. Dari folder CloudShell kerja, edit
| AWS Umum, IBM Mainframe, Cobol |
Unggah metadata JSON ke bucket Amazon S3. | Dari folder CloudShell kerja, masukkan AWS CLI perintah berikut untuk mengunggah metadata JSON ke bucket Amazon S3 Anda:
| AWS Umum |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Kirim file EBCDIC ke bucket Amazon S3. | Dari folder CloudShell kerja, masukkan perintah berikut untuk mengirim file EBCDIC ke bucket Amazon S3:
catatanKami menyarankan Anda mengatur folder yang berbeda untuk file input (EBCDIC) dan output (ASCII) agar tidak memanggil fungsi konversi Lambda lagi saat file ASCII diunggah ke bucket Amazon S3. | AWS Umum |
Periksa outputnya. | Dari folder CloudShell kerja, masukkan perintah berikut untuk memeriksa apakah file ASCII dihasilkan di bucket Amazon S3 Anda:
catatanKonversi data dapat memakan waktu beberapa detik untuk terjadi. Kami menyarankan Anda memeriksa file ASCII beberapa kali. Setelah file ASCII tersedia, masukkan perintah berikut untuk melihat konten file yang dikonversi di bucket Amazon S3. Sesuai kebutuhan, Anda dapat mengunduhnya atau menggunakannya langsung dari bucket Amazon S3:
Periksa konten file ASCII:
| AWS Umum |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
(Opsional) Siapkan variabel dan folder. | Jika Anda kehilangan koneksi dengan CloudShell, sambungkan kembali dan kemudian masukkan perintah berikut untuk mengubah direktori ke folder kerja:
Pastikan bahwa variabel lingkungan didefinisikan:
| AWS Umum |
Hapus konfigurasi notifikasi untuk bucket. | Dari folder CloudShell kerja, jalankan perintah berikut untuk menghapus konfigurasi pemberitahuan acara Amazon S3:
| AWS Umum |
Hapus fungsi Lambda. | Dari folder CloudShell kerja, masukkan perintah berikut untuk menghapus fungsi Lambda untuk konverter EBCDIC:
| AWS Umum |
Hapus peran dan kebijakan IAM. | Dari folder CloudShell kerja, masukkan perintah berikut untuk menghapus peran dan kebijakan konverter EBCDIC:
| AWS Umum |
Hapus file yang dihasilkan di bucket Amazon S3. | Dari folder CloudShell kerja, masukkan perintah berikut untuk menghapus file yang dihasilkan di bucket Amazon S3:
| AWS Umum |
Hapus folder kerja. | Dari folder CloudShell kerja, masukkan perintah berikut untuk menghapus
| AWS Umum |
Sumber daya terkait
Utilitas Data Mainframe README
() GitHub COBOL
(dokumentasi IBM) Menggunakan pemicu Amazon S3 untuk menjalankan fungsi Lambda (dokumentasi)AWS Lambda