Menyelesaikan Masalah Umum - AWS Data Pipeline

AWS Data Pipeline tidak lagi tersedia untuk pelanggan baru. Pelanggan yang sudah ada AWS Data Pipeline dapat terus menggunakan layanan seperti biasa. Pelajari selengkapnya

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

Menyelesaikan Masalah Umum

Topik ini memberikan berbagai gejala masalah AWS Data Pipeline dan langkah-langkah yang direkomendasikan untuk menyelesaikannya.

Alur Terjebak dalam Status Tertunda

Alur yang terlihat macet dalam status PENDING menunjukkan bahwa alur belum diaktifkan, atau aktivasi gagal karena kesalahan dalam definisi alur. Pastikan Anda tidak menerima kesalahan apa pun saat mengirimkan alur menggunakan AWS Data Pipeline CLI atau saat mencoba menyimpan atau mengaktifkan alur menggunakan konsol AWS Data Pipeline tersebut. Selain itu, periksa apakah alur Anda memiliki definisi yang valid.

Untuk melihat definisi alur Anda di layar menggunakan CLI:

aws datapipeline --get-pipeline-definition --pipeline-id df-EXAMPLE_PIPELINE_ID

Pastikan definisi alur selesai, periksa tanda kurung Anda, verifikasi koma yang diperlukan, periksa referensi yang hilang, dan kesalahan sintaks lainnya. Lebih baik menggunakan editor teks yang secara visual dapat memvalidasi sintaks file JSON.

Komponen Alur Terjebak dalam Menunggu Status Runner

Jika alur Anda dalam status TERJADWAL dan satu atau beberapa tugas tampak macet dalam status WAITING_FOR_RUNNER, pastikan Anda mengatur nilai yang valid untuk bidang runOn atau workerGroup untuk tugas tersebut. Jika kedua nilai kosong atau hilang, tugas tidak dapat dimulai karena tidak ada asosiasi antara tugas dan pekerja untuk melakukan tugas. Dalam situasi ini, Anda telah mendefinisikan pekerjaan tetapi belum menentukan komputer apa yang melakukan pekerjaan. Jika dapat diaplikasikan, verifikasi bahwa nilai workerGroup yang ditetapkan ke komponen alur adalah nama dan kasus yang sama persis dengan nilai workerGroup yang Anda konfigurasi untuk Runner Tugas.

catatan

Jika Anda memberikan nilai runsOn dan workerGroup ada, workerGroup diabaikan.

Penyebab potensial lain dari masalah ini adalah bahwa titik akhir dan access key yang diberikan ke Runner Tugas tidak sama dengan konsol AWS Data Pipeline tersebut atau komputer tempat alat AWS Data Pipeline CLI terpasang. Anda mungkin telah membuat alur baru tanpa kesalahan yang terlihat, tetapi Runner Tugas melakukan polling lokasi yang salah karena perbedaan kredensial, atau polling lokasi yang benar dengan izin yang tidak memadai untuk mengidentifikasi dan menjalankan pekerjaan yang ditentukan oleh definisi alur.

Komponen Alur Terjebak dalam Status WAITING_ON_DEPENDENCIES

Jika alur Anda berada dalam status SCHEDULED dan satu atau beberapa tugas terlihat macet dalam status WAITING_ON_DEPENDENCIES, pastikan prasyarat awal alur Anda telah terpenuhi. Jika prasyarat objek pertama dalam rantai logika tidak terpenuhi, tidak ada objek yang bergantung pada objek pertama tersebut yang dapat keluar dari status WAITING_ON_DEPENDENCIES.

Sebagai contoh, perhatikan kutipan berikut dari definisi alur. Dalam hal ini, InputData objek memiliki prasyarat 'Siap' menentukan bahwa data harus ada sebelum InputData objek selesai. Jika data tidak ada, InputData objek tetap dalam WAITING_ON_DEPENDENCIES keadaan, menunggu data yang ditentukan oleh bidang jalur tersedia. Benda apa pun yang bergantung InputData juga tetap dalam WAITING_ON_DEPENDENCIES keadaan menunggu InputData objek mencapai FINISHED keadaan.

{ "id": "InputData", "type": "S3DataNode", "filePath": "s3://elasticmapreduce/samples/wordcount/wordSplitter.py", "schedule":{"ref":"MySchedule"}, "precondition": "Ready" }, { "id": "Ready", "type": "Exists" ...

Juga, periksa apakah objek Anda memiliki izin yang tepat untuk mengakses data. Dalam contoh sebelumnya, jika informasi di bidang kredensyal tidak memiliki izin untuk mengakses data yang ditentukan di bidang jalur, InputData objek akan terjebak dalam WAITING_ON_DEPENDENCIES keadaan karena tidak dapat mengakses data yang ditentukan oleh bidang jalur, bahkan jika data itu ada.

Mungkin juga sumber daya yang berkomunikasi dengan Amazon S3 tidak memiliki alamat IP publik yang terkait dengannya. Misalnya, Ec2Resource dalam subnet publik harus memiliki alamat IP publik yang terasosiasi dengannya.

Terakhir, dalam kondisi tertentu, instans sumber daya dapat mencapai status WAITING_ON_DEPENDENCIES jauh lebih awal daripada aktivitas terkait yang dijadwalkan untuk dimulai, yang mungkin memberi kesan bahwa sumber daya atau aktivitas tersebut gagal.

Jalankan Tidak Mulai Saat Dijadwalkan

Periksa apakah Anda memilih jenis jadwal yang benar yang menentukan apakah tugas Anda dimulai pada awal interval jadwal (Tipe Jadwal Gaya Cron) atau di akhir interval jadwal (Tipe Jadwal Deret Waktu).

Selain itu, periksa apakah Anda telah menentukan tanggal dengan benar dalam objek jadwal Anda startDateTime dan bahwa dan endDateTime nilai dalam format UTC, seperti pada contoh berikut:

{ "id": "MySchedule", "startDateTime": "2012-11-12T19:30:00", "endDateTime":"2012-11-12T20:30:00", "period": "1 Hour", "type": "Schedule" },

Komponen Alur Berjalan dalam Urutan yang Salah

Anda mungkin memperhatikan bahwa waktu mulai dan berakhir untuk komponen alur Anda berjalan dalam urutan yang salah, atau dalam urutan yang berbeda dari yang Anda harapkan. Penting untuk dipahami bahwa komponen alur dapat mulai berjalan secara bersamaan jika prasyaratnya terpenuhi pada saat memulai. Dengan kata lain, komponen alur tidak dijalankan secara berurutan secara default; jika Anda memerlukan perintah eksekusi tertentu, Anda harus mengendalikan urutan eksekusi dengan prasyarat dan bidang dependsOn.

Verifikasi bahwa Anda menggunakan bidang dependsOn yang diisi dengan referensi ke komponen alur prasyarat yang benar, dan bahwa semua petunjuk yang diperlukan antara komponen ada untuk mencapai urutan yang Anda butuhkan.

Klaster EMR Gagal Dengan Kesalahan: Token keamanan yang disertakan dalam permintaan tidak valid

Verifikasi peran, kebijakan, dan hubungan kepercayaan IAM Anda seperti yang dijelaskan di IAM Role untuk AWS Data Pipeline.

Izin Tidak Memadai untuk Mengakses Sumber Daya

Izin yang Anda atur pada peran IAM menentukan apakah AWS Data Pipeline dapat mengakses klaster EMR dan instans EC2 untuk menjalankan alur Anda. Selain itu, IAM memberikan konsep hubungan kepercayaan yang lebih jauh untuk mengizinkan pembuatan sumber daya atas nama Anda. Misalnya, saat Anda membuat alur yang menggunakan instans EC2 untuk menjalankan perintah untuk memindahkan data, AWS Data Pipeline dapat menyediakan instans EC2 ini untuk Anda. Jika Anda mengalami masalah, terutama yang melibatkan sumber daya yang dapat Anda akses secara manual tetapi AWS Data Pipeline tidak dapat melakukannya, verifikasi peran IAM, kebijakan, dan hubungan kepercayaan Anda seperti yang dijelaskan dalam IAM Role untuk AWS Data Pipeline.

Kode Status: 400 Kode Kesalahan: PipelineNotFoundException

Kesalahan ini berarti bahwa peran default IAM Anda mungkin tidak memiliki izin yang diperlukan agar AWS Data Pipeline berfungsi dengan benar. Untuk informasi selengkapnya, lihat IAM Role untuk AWS Data Pipeline.

Membuat Alur Menyebabkan Kesalahan Token Keamanan

Anda menerima kesalahan berikut ini saat mencoba membuat alur:

Gagal membuat alur dengan 'pipeline_name'. Kesalahan: UnrecognizedClientException - Token keamanan yang disertakan dalam permintaan tidak valid.

Tidak Dapat Melihat Detail Alur di Konsol Tersebut

Filter alur konsol AWS Data Pipeline tersebut berlaku untuk tanggal mulai terjadwal untuk alur, tanpa memperhatikan kapan alur dikirimkan. Dimungkinkan untuk mengirimkan alur baru menggunakan tanggal mulai terjadwal yang terjadi di masa lalu, yang mungkin tidak ditampilkan oleh filter tanggal default. Untuk melihat detail alur, ubah filter tanggal Anda untuk memastikan tanggal mulai alur yang dijadwalkan sesuai dengan filter rentang tanggal.

Kesalahan dalam Kode Status runner jarak jauh: 404, Layanan AWS: Amazon S3

Kesalahan ini berarti bahwa Runner Tugas tidak dapat mengakses file Anda di Amazon S3. Verifikasi bahwa:

  • Anda memiliki kredensial yang diatur dengan benar

  • Bucket Amazon S3 yang Anda coba akses ada

  • Anda diberi otorisasi untuk mengakses bucket Amazon S3

Akses Ditolak - Tidak Diotorisasi untuk Melakukan Fungsi datapipeline:

Di log Runner Tugas, Anda mungkin melihat kesalahan yang mirip dengan berikut ini:

  • Kode Status ERROR: 403

  • Layanan AWS: DataPipeline

  • Kode Kesalahan AWS: AccessDenied

  • Pesan Kesalahan AWS: Pengguna: arn:aws:sts: :xxxxxxxxxxxxxx:federated-user/i-xxxxxxxx tidak diizinkan untuk melakukan: datapipeline:. PollForTask

catatan

Dalam pesan kesalahan ini, PollForTask dapat diganti dengan nama AWS Data Pipeline izin lainnya.

Pesan kesalahan ini menunjukkan bahwa IAM role yang Anda tentukan memerlukan izin tambahan yang diperlukan untuk berinteraksi dengan AWS Data Pipeline. Pastikan kebijakan peran IAM Anda berisi baris berikut, yang diganti dengan nama izin yang ingin Anda tambahkan (gunakan* untuk memberikan semua izin). PollForTask Untuk informasi selengkapnya tentang cara membuat IAM role baru dan menerapkan kebijakan padanya, lihat Mengelola Kebijakan IAM di panduan Menggunakan IAM.

{ "Action": [ "datapipeline:PollForTask" ], "Effect": "Allow", "Resource": ["*"] }

AMI Amazon EMR Lama Dapat Membuat Data yang Salah untuk File CSV Besar

Pada Amazon EMR AMI sebelumnya 3,9 (3,8 dan di bawah) AWS Data Pipeline menggunakan kustom InputFormat untuk membaca dan menulis file CSV untuk digunakan dengan pekerjaan. MapReduce Ini digunakan saat layanan menyusun tabel ke dan dari Amazon S3. Masalah dengan ini InputFormat ditemukan di mana membaca catatan dari file CSV besar dapat mengakibatkan menghasilkan tabel yang tidak disalin dengan benar. Masalah ini telah diperbaiki di rilis Amazon EMR selanjutnya. Harap gunakan Amazon EMR AMI 3.9 atau rilis Amazon EMR 4.0.0 atau yang lebih baru.

Meningkatkan Batasan AWS Data Pipeline

Terkadang, Anda dapat melebihi batas sistem AWS Data Pipeline tertentu. Misalnya, batas alur default adalah 20 alur dengan masing-masing 50 objek. Jika Anda menemukan bahwa Anda membutuhkan lebih banyak alur daripada batasnya, pertimbangkan untuk menggabungkan beberapa alur untuk membuat lebih sedikit alur dengan lebih banyak objek di masing-masing. Untuk informasi lebih lanjut tentang batas AWS Data Pipeline, lihat Batasan AWS Data Pipeline. Namun, jika Anda tidak dapat mengatasi batas menggunakan teknik penggabungan alur, minta peningkatan kapasitas Anda menggunakan formulir ini: Peningkatan Batas Data Pipeline.