Memperbaiki dan melanjutkan alur kerja - AWS Glue

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Memperbaiki dan melanjutkan alur kerja

Jika satu atau beberapa simpul (tugas atau crawler) dalam sebuah alur kerja tidak berhasil selesai, ini berarti bahwa alur kerja hanya dieksekusi sebagian. Setelah Anda menemukan akar penyebab dan melakukan koreksi, Anda dapat memilih satu atau beberapa simpul sebagai tempat melanjutkan eksekusi alur kerja, dan kemudian melanjutkan eksekusi alur kerja. Simpul yang dipilih dan semua simpul yang menjadi hilir dari simpul tersebut kemudian dijalankan.

Melanjutkan alur kerja: Cara kerjanya

Perhatikan alur kerja W1 dalam diagram berikut.

Pemicu ditunjukkan dalam persegi panjang dan tugas ditunjukkan dalam lingkaran. Pemicu T1 di sebelah kiri memulai alur kerja dengan menjalankan tugas J1. Pemicu dan tugas berikutnya ada, tetapi tugas J2 dan J3 gagal, sehingga pemicu hilir dan tugas ditampilkan sebagai tidak berjalan.

Eksekusi alur kerja dilanjutkan sebagai berikut:

  1. Pemicu T1 memulai tugas J1.

  2. Keberhasilan penyelesaian J1 mengaktifkan pemicu T2 dan T3, yang masing-masing menjalankan tugas J2 dan J3.

  3. Tugas J2 dan J3 gagal.

  4. Pemicu T4 dan T5 tergantung pada keberhasilan penyelesaian J2 dan J3, sehingga pemicu tersebut tidak aktif, dan tugas J4 dan J5 tidak berjalan. Alur kerja W1 hanya dieksekusi sebagian.

Sekarang, anggap bahwa masalah-masalah yang menyebabkan J2 dan J3 gagal diperbaiki. J2 dan J3 dipilih sebagai titik awal untuk melanjutkan eksekusi alur kerja.

Tugas J2 dan J3 diberi bendera sebagai simpul yang akan dilanjutkan. Pemicu dan tugas hilir ditunjukkan sebagai berhasil dijalankan.

Eksekusi alur kerja berjalan kembali seperti berikut ini:

  1. Tugas J2 dan J3 berjalan dengan sukses.

  2. Pemicu T4 dan T5 aktif.

  3. Tugas J4 dan J5 berjalan dengan sukses.

Eksekusi alur kerja yang dilanjutkan dilacak sebagai alur kerja terpisah yang dijalankan dengan ID eksekusi baru. Ketika Anda melihat riwayat alur kerja, Anda dapat melihat ID eksekusi sebelumnya untuk setiap eksekusi alur kerja. Dalam contoh pada tangkapan layar berikut, eksekusi alur kerja dengan ID eksekusi wr_c7a22... (baris kedua) mempunyai simpul yang tidak lengkap. Pengguna memperbaiki masalah dan melanjutkan eksekusi alur kerja, yang menghasilkan ID eksekusi wr_a07e55... (baris pertama).

Tabel pada tab Riwayat untuk sebuah alur kerja berisi dua baris, satu baris untuk masing-masing eksekusi alur kerja. Baris pertama memiliki ID eksekusi dan ID eksekusi sebelumnya. Baris kedua hanya memiliki sebuah ID eksekusi. ID eksekusi sebelumnya pada baris pertama adalah sama dengan ID eksekusi di baris ke-2.
catatan

Untuk sisa pembahasan ini, istilah "eksekusi alur kerja yang dilanjutkan" mengacu pada alur kerja yang dibuat ketika eksekusi alur kerja sebelumnya dilanjutkan. "Eksekusi alur kerja asli" mengacu pada eksekusi alur kerja yang hanya dieksekusi sebagian dan perlu dilanjutkan.

Grafik lari alur kerja yang dilanjutkan

Dalam eksekusi alur kerja yang dilanjutkan, meskipun hanya satu subset dari simpul yang dijalankan, tetapi grafik eksekusi adalah sebuah grafik yang lengkap. Artinya, simpul yang tidak dijalankan di alur kerja yang dilanjutkan disalin dari grafik eksekusi dari eksekusi alur kerja asli. Simpul tugas dan crawler yang disalin yang berjalan di eksekusi alur kerja asli mencakup detail eksekusi.

Pertimbangkan lagi alur kerja W1 pada diagram sebelumnya. Ketika eksekusi alur kerja yang dilanjutkan memulai dengan J2 dan J3, grafik eksekusi untuk eksekusi alur kerja yang dilanjutkan menunjukkan semua tugas, J1 hingga J5, dan semua pemicu, T1 hingga T5. Detail eksekusi untuk J1 disalin dari eksekusi alur kerja asli.

Alur kerja menjalankan snapshot

Ketika eksekusi alur kerja dimulai, AWS Glue mengambil snapshot dari grafik desain alur kerja pada saat itu. Snapshot yang digunakan di sepanjang eksekusi alur kerja. Jika Anda membuat perubahan pada pemicu setelah eksekusi dimulai, perubahan tersebut tidak akan mempengaruhi eksekusi alur kerja saat ini. Snapshot memastikan bahwa eksekusi alur kerja berjalan dengan cara yang konsisten.

Snapshot hanya membuat pemicu tetap. Perubahan yang Anda buat untuk tugas dan crawler hilir selama eksekusi alur kerja berlaku untuk eksekusi saat ini.

Melanjutkan alur kerja

Ikuti langkah-langkah ini untuk melanjutkan sebuah eksekusi alur kerja. Anda dapat melanjutkan eksekusi alur kerja dengan menggunakan konsol AWS Glue, API, atau AWS Command Line Interface (AWS CLI).

Untuk melanjutkan sebuah eksekusi alur kerja (konsol)
  1. Buka konsol AWS Glue di https://console.aws.amazon.com/glue/.

    Masuk sebagai pengguna yang memiliki izin untuk melihat alur kerja dan melanjutkan eksekusi alur kerja.

    catatan

    Untuk melanjutkan eksekusi alur kerja, Anda memerlukan izin AWS Identity and Access Management (IAM) glue:ResumeWorkflowRun.

  2. Di panel navigasi, pilih Alur Kerja.

  3. Pilih alur kerja, lalu pilih tab Riwayat.

  4. Pilih eksekusi alur kerja yang hanya dieksekusi sebagian, dan kemudian pilih Lihat detail eksekusi.

  5. Dalam grafik eksekusi, pilih simpul pertama (atau satu-satunya) yang ingin Anda mulai ulang dan yang ingin Anda jadikan tempat di mana eksekusi alur kerja dilanjutkan.

  6. Di panel detail di sebelah kanan grafik, pilih kotak centang Lanjutkan.

    Grafik eksekusi menunjukkan tiga simpul, termasuk simpul tugas gagal. Panel detail tugas di sebelah kanan mencakup kotak centang Lanjutkan.

    Simpul berubah warna dan menunjukkan ikon resume kecil di kanan atas.

    Perubahan grafik eksekusi dijelaskan dalam teks. Kotak centang Lanjutkan dipilih.
  7. Selesaikan dua langkah sebelumnya untuk setiap simpul tambahan untuk memulai ulang.

  8. Pilih Lanjutkan eksekusi.

Untuk melanjutkan sebuah eksekusi alur kerja (AWS CLI)
  1. Pastikan bahwa Anda memiliki Izin IAM glue:ResumeWorkflowRun.

  2. Mengambil ID simpul untuk simpul yang ingin Anda mulai ulang.

    1. Jalankan perintah get-workflow-run untuk eksekusi alur kerja asli. Berikan nama alur kerja dan ID eksekusi, dan tambahkan opsi --include-graph, seperti yang ditunjukkan dalam contoh berikut. Dapatkan ID eksekusi dari tab Riwayat pada konsol, atau dengan menjalankan perintah get-workflow.

      aws glue get-workflow-run --name cloudtrailtest1 --run-id wr_a07e55f2087afdd415a404403f644a4265278f68b13ba3da08c71924ebe3c3a8 --include-graph

      Perintah tersebut akan mengembalikan simpul dan edge dari grafik tersebut sebagai objek JSON besar.

    2. Cari simpul yang menarik berdasarkan properti Type dan Name dari objek simpul tersebut.

      Berikut ini adalah sebuah simpul objek contoh dari output.

      {
          "Type": "JOB",
          "Name": "test1_post_failure_4592978",
          "UniqueId": "wnode_d1b2563c503078b153142ee76ce545fe5ceef66e053628a786ddd74a05da86fd",
          "JobDetails": {
              "JobRuns": [
                  {
                      "Id": "jr_690b9f7fc5cb399204bc542c6c956f39934496a5d665a42de891e5b01f59e613",
                      "Attempt": 0,
                      "TriggerName": "test1_aggregate_failure_649b2432",
                      "JobName": "test1_post_failure_4592978",
                      "StartedOn": 1595358275.375,
                      "LastModifiedOn": 1595358298.785,
                      "CompletedOn": 1595358298.785,
                      "JobRunState": "FAILED",
                      "PredecessorRuns": [],
                      "AllocatedCapacity": 0,
                      "ExecutionTime": 16,
                      "Timeout": 2880,
                      "MaxCapacity": 0.0625,
                      "LogGroupName": "/aws-glue/python-jobs"
                  }
              ]
          }
      }
    3. Dapatkan ID simpul dari properti UniqueId dari objek simpul tersebut.

  3. Jalankan perintah resume-workflow-run. Berikan nama alur kerja, ID eksekusi, dan daftar ID simpul yang dipisahkan oleh spasi, seperti yang ditunjukkan dalam contoh berikut.

    aws glue resume-workflow-run --name cloudtrailtest1 --run-id wr_a07e55f2087afdd415a404403f644a4265278f68b13ba3da08c71924ebe3c3a8 --node-ids wnode_ca1f63e918fb855e063aed2f42ec5762ccf71b80082ae2eb5daeb8052442f2f3 wnode_d1b2563c503078b153142ee76ce545fe5ceef66e053628a786ddd74a05da86fd

    Perintah tersebut menghasilkan output ID eksekusi dari eksekusi alur kerja (baru) yang dilanjutkan dan daftar simpul yang akan dimulai.

    {
        "RunId": "wr_2ada0d3209a262fc1156e4291134b3bd643491bcfb0ceead30bd3e4efac24de9",
        "NodeIds": [
            "wnode_ca1f63e918fb855e063aed2f42ec5762ccf71b80082ae2eb5daeb8052442f2f3"
        ]
    }
    

    Perhatikan bahwa meskipun contoh perintah resume-workflow-run mencantumkan dua simpul untuk memulai ulang, contoh output menunjukkan bahwa hanya satu simpul yang akan dimulai ulang. Hal ini karena satu simpul merupakan hilir dari simpul yang lain, dan simpul hilir bagaimanapun akan dimulai ulang oleh alur normal dari alur kerja tersebut.

Catatan dan batasan untuk melanjutkan alur kerja berjalan

Simpan catatan dan batasan berikut ini saat melanjutkan eksekusi alur kerja.

  • Anda dapat melanjutkan eksekusi alur kerja hanya jika alur kerja tersebut dalam status COMPLETED.

    catatan

    Bahkan jika satu simpul atau beberapa simpul dalam eksekusi alur kerja tidak selesai, status eksekusi alur kerja ditampilkan sebagai COMPLETED. Pastikan untuk memeriksa grafik eksekusi untuk menemukan simpul yang tidak berhasil diselesaikan.

  • Anda dapat melanjutkan eksekusi alur kerja dari setiap simpul tugas atau crawler yang berusaha dijalankan oleh eksekusi alur kerja asli. Anda tidak dapat melanjutkan eksekusi alur kerja dari sebuah simpul pemicu.

  • Memulai ulang simpul tidak akan me-reset statusnya. Setiap data yang diproses sebagian tidak akan dicabut.

  • Anda dapat melanjutkan eksekusi alur kerja yang sama beberapa kali. Jika eksekusi alur kerja yang dilanjutkan hanya dieksekusi sebagian, Anda dapat mengatasi masalah dan melanjutkan eksekusi yang dilanjutkan tersebut.

  • Jika Anda memilih dua simpul untuk memulai ulang dan mereka bergantung satu sama lain, maka simpul hulu akan dijalankan sebelum simpul hilir. Bahkan, memilih simpul hilir adalah sebuah redundansi, karena simpul hilir akan dieksekusi sesuai dengan alur normal dari alur kerja tersebut.