Memecahkan Masalah Amazon Scheduler EventBridge - EventBridge Penjadwal

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

Memecahkan Masalah Amazon Scheduler EventBridge

Anda dapat menggunakan topik di bagian ini untuk memecahkan masalah umum Amazon EventBridge Scheduler.

Jadwal saya gagal dengan kesalahan target

Kegagalan pemanggilan target adalah salah satu masalah paling umum dengan EventBridge Scheduler. Kegagalan ini dapat terjadi karena beberapa alasan:

Penyebab umum:

  • Parameter target yang hilang atau salah.

  • Masalah konektivitas jaringan.

  • Pelambatan API.

  • Konfigurasi target salah.

Langkah pemecahan masalah

  1. Mengatur Antrian Surat Mati (DLQ)

    • DLQ membantu Anda menangkap dan menganalisis pemanggilan yang gagal.

    • Pemanggilan yang gagal dikirim ke DLQ dengan pesan kesalahan terperinci.

    • Untuk mengonfigurasi DLQ, tambahkan ke konfigurasi jadwal Anda:

    { "DeadLetterConfig": { "Arn": "arn:aws:sqs:region:account-id:MyDLQ" } }

    Catatan: Jika DLQ Anda dienkripsi dengan kunci KMS, pastikan kebijakan kunci memungkinkan EventBridge Scheduler untuk menggunakannya:

    { "Sid": "Allow EventBridge Scheduler to use the key", "Effect": "Allow", "Principal": { "Service": "scheduler.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*" }
  2. Verifikasi parameter API

    • Pastikan semua parameter yang diperlukan untuk panggilan API target Anda ada dan diformat dengan benar.

    • Periksa apakah nilai parameter berada dalam rentang yang diizinkan.

    • Verifikasi bahwa titik akhir API dapat diakses dari VPC Anda jika menggunakan titik akhir VPC.

  3. Tinjau konfigurasi jaringan

    • Jika panggilan gagal karena masalah jaringan sementara, terapkan logika coba lagi.

    • Contoh kebijakan coba lagi:

    { "RetryPolicy": { "MaximumRetryAttempts": 3, "MaximumEventAgeInSeconds": 3600 } }
  4. Periksa konfigurasi khusus target

    • Untuk target template (seperti tugas ECS), pastikan Anda memberikan penggantian melalui Target.Input parameter API pembuatan jadwal.

    • Verifikasi bahwa layanan target Anda didukung dan dikonfigurasi dengan benar.

Jadwalkan masalah izin peran eksekusi

Masalah izin peran IAM adalah alasan umum untuk kegagalan eksekusi jadwal. Berikut cara memecahkan masalah dan mengatasi masalah ini:

Penyebab umum

  • Izin yang diperlukan tidak ada untuk layanan target

  • Konfigurasi peran yang salah dalam jadwal

  • Hubungan kepercayaan yang hilang dengan layanan EventBridge Scheduler

  • Izin tidak memadai untuk mengakses sumber daya terenkripsi

Gejala

  • Peningkatan TargetErrorCount metrik di CloudWatch

  • Jadwal gagal dijalankan tanpa masalah yang jelas dalam konfigurasi jadwal

Langkah pemecahan masalah

  1. Monitor CloudWatch metrik

    • Periksa TargetErrorCount metrik di CloudWatch.

  2. Gunakan Dead-Letter Queue (DLQ) untuk mengonfirmasi masalah izin

    • Konfigurasikan DLQ untuk jadwal Anda.

    • Jika ada masalah izin dengan target Anda, dan DLQ dikonfigurasi dengan benar, Anda akan melihat pemanggilan gagal di DLQ dengan pesan kesalahan terkait izin.

    • Jika DLQ tetap kosong meskipun eksekusi gagal ditampilkan dalam CloudWatch metrik, ini kemungkinan menunjukkan masalah izin yang mencegah EventBridge Scheduler menulis ke DLQ itu sendiri.

    catatan

    Pastikan DLQ itu sendiri memiliki izin yang benar. Jika dienkripsi, pastikan EventBridge Scheduler memiliki izin untuk menggunakan kunci KMS.

  3. Verifikasi hubungan kepercayaan

    • Pastikan peran IAM Anda memiliki hubungan kepercayaan yang benar dengan EventBridge Scheduler:

    { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Service": "scheduler.amazonaws.com" }, "Action": "sts:AssumeRole" }] }
  4. Periksa izin peran eksekusi jadwal

    • Peran eksekusi jadwal memerlukan izin khusus untuk memanggil jenis target yang berbeda.

    • Contoh izin untuk disertakan dalam kebijakan peran eksekusi jadwal Anda:

    // For Lambda function targets - add to schedule execution role { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": "arn:aws:lambda:region:account-id:function:function-name" }] } // For SQS queue targets - add to schedule execution role { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "sqs:SendMessage" ], "Resource": "arn:aws:sqs:region:account-id:queue-name" }] }
  5. Periksa akses sumber daya terenkripsi

    • Jika target Anda menggunakan sumber daya terenkripsi (misalnya, antrian SQS terenkripsi KMS), pastikan peran Anda memiliki izin untuk menggunakan kunci KMS:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "arn:aws:kms:region:account-id:key/key-id" } ] }
  6. Verifikasi konfigurasi ARN peran

    • Pastikan peran ARN dalam konfigurasi jadwal Anda sudah benar.

    • Verifikasi peran ada di wilayah yang sama Akun AWS dan sesuai dengan jadwal Anda.

Memahami dan mengelola kuota layanan

Jika Anda mengalami masalah saat membuat jadwal atau melihat pemanggilan yang dibatasi, Anda mungkin mencapai batas kuota layanan. EventBridge Scheduler memiliki kuota untuk jumlah jadwal, grup jadwal, dan tingkat pemanggilan, yang dapat bervariasi menurut wilayah.

Mengidentifikasi masalah kuota

Untuk menentukan apakah Anda mencapai batas kuota:

  1. Monitor CloudWatch metrik

    • Periksa InvocationThrottleCount metriknya. Peningkatan metrik ini menunjukkan Anda melebihi batas tingkat pemanggilan Anda.

    • Tinjau InvocationAttemptCount metrik untuk memahami penggunaan Anda saat ini.

  2. Perhatikan pesan kesalahan tertentu

    • Saat membuat atau memodifikasi jadwal, a LimitExceededException menunjukkan bahwa Anda telah mencapai jumlah maksimum jadwal atau grup jadwal.

    • Panggilan API yang mengembalikan kesalahan pelambatan menyarankan Anda melebihi kuota permintaan API.

Menyelesaikan masalah kuota

Jika Anda menentukan Anda mencapai batas kuota:

  1. Tinjau dan optimalkan jadwal Anda saat ini. Pertimbangkan untuk mengkonsolidasikan jadwal serupa atau menghapus yang tidak terpakai.

  2. Untuk pembatasan API, terapkan coba lagi dengan backoff dalam panggilan API Anda.

  3. Jika Anda membutuhkan kuota yang lebih tinggi, mintalah peningkatan melalui konsol Service Quotas. Pilih EventBridge Scheduler, pilih kuota yang perlu Anda tingkatkan, dan kirimkan permintaan dengan justifikasi bisnis Anda.

Pola jadwal dan memicu masalah waktu

Pengguna terkadang mengalami masalah di mana jadwal tidak terpicu pada waktu yang diharapkan. Ini paling sering disebabkan oleh kesalahpahaman tentang pola jadwal, perubahan waktu musim panas, atau jendela waktu yang fleksibel.

Penyebab umum

  • Salah tafsir ekspresi cron.

  • Perilaku tak terduga selama perubahan waktu musim panas.

  • Kebingungan tentang jendela waktu yang fleksibel.

  • Kesalahpahaman ekspresi tingkat.

Langkah pemecahan masalah

  1. Verifikasi ekspresi cron

    • Pastikan ekspresi cron Anda diformat dengan benar.

    • Perhatikan bahwa Anda tidak dapat menentukan keduanya day-of-month dan day-of-week bidang secara bersamaan dalam ekspresi cron.

  2. Pertimbangan zona waktu

    • Pilih zona waktu pilihan Anda saat membuat jadwal.

    • Pahami bagaimana daylight saving time memengaruhi jadwal Anda karena penyesuaian ini didasarkan pada UTC.

    Contoh dampak musim panas: Jika Anda mengonfigurasi jadwal untuk berjalan pada pukul 7:00 GMT:

    • Selama musim dingin: Jadwal berjalan pada 7:00 AM GMT (sebagai GMT = UTC)

    • Selama musim panas: Jadwal masih berjalan pada 7:00 AM UTC, yang sekarang 6:00 AM GMT/BST

    Jika Anda membutuhkan jadwal untuk berjalan pada waktu lokal yang sama sepanjang tahun, pastikan untuk memilih zona waktu yang sesuai saat membuat jadwal dan bagaimana penghematan siang hari dapat memengaruhi zona waktu tersebut.

  3. Memahami jendela waktu yang fleksibel

    • Jendela waktu yang fleksibel memungkinkan EventBridge Scheduler untuk mengoptimalkan pemanggilan.

    • Jadwal mungkin tidak terpicu tepat di awal jendela.

    • Pantau waktu doa yang sebenarnya untuk memahami perilaku.

  4. Tingkat ulasan dan ekspresi cron

    • Pastikan ekspresi tingkat diformat dengan benar (misalnya,rate(5 minutes),rate(1 hour)).

    • Untuk ekspresi rate dan cron, ketahuilah bahwa pemanggilan jadwal tidak dijepit ke detik ke-0 dalam satu menit.

    • Jadwal dapat memicu dalam menit yang ditentukan, tetapi tidak harus pada awal menit yang tepat.

    Contoh:

    • Jadwal dengan rate(1 hour) mungkin berjalan pada 14:00:45, 15:00:32, 16:00:18, dll.

    • Jadwal cron yang ditetapkan untuk 0 * * * ? * (setiap jam) mungkin berjalan pada pukul 14:00:15, 15:00:07, 16:00:52, dll.

  5. Monitor CloudWatch metrik

    • Gunakan InvocationAttemptCount metrik untuk memverifikasi apakah jadwal Anda memicu.

    • Periksa TargetErrorCount apakah pemanggilan gagal.

    • Jika Anda telah mengonfigurasi Antrian Surat Mati, pantau InvocationsSentToDeadLetterCount untuk melacak pemanggilan yang gagal.

Membuat pola jadwal dan ekspresi cron

Pengguna sering mengalami masalah saat membuat pola jadwal, terutama dengan ekspresi cron. Berikut adalah beberapa masalah umum dan cara mengatasinya:

Masalah umum

  • Sintaks cron salah

  • Mencoba menggunakan fitur cron yang tidak didukung

  • Kebingungan tentang bidang mana yang dapat digunakan bersama

Langkah pemecahan masalah

  1. Tinjau sintaks ekspresi cron

    • Pastikan ekspresi cron Anda mengikuti format yang benar:Minutes Hours Day-of-month Month Day-of-week Year.

    • Ingat bahwa EventBridge Scheduler menggunakan standar cron dengan bidang Tahun tambahan.

  2. Memahami keterbatasan

    • Anda tidak dapat menentukan kedua day-of-week bidang day-of-month dan secara bersamaan seperti yang dibahas di sini.

    • Ekspresi cron yang mengarah ke tingkat lebih cepat dari 1 menit tidak didukung.

  3. Gunakan fitur pratinjau jadwal

    • Saat membuat atau mengedit jadwal, EventBridge Scheduler menyediakan pratinjau 10 kali eksekusi berikutnya.

    • Gunakan pratinjau ini untuk memverifikasi bahwa jadwal Anda akan berjalan pada waktu yang ditentukan.

    • Jika pratinjau tidak sesuai dengan harapan Anda, tinjau dan sesuaikan ekspresi cron Anda.

Apakah target saya sedang dipicu?

Untuk mengonfirmasi apakah target Anda sedang dipicu:

  1. Periksa CloudWatch metrik:

    • InvocationAttemptCountmenunjukkan jumlah percobaan pemanggilan

    • TargetErrorCountmenunjukkan jika ada pemanggilan yang gagal

    • TargetErrorThrottledCountmenunjukkan apakah target Anda sedang dibatasi

    • InvocationDroppedCountmenunjukkan jika ada pemanggilan yang dijatuhkan

  2. Konfigurasikan Dead-Letter Queue (DLQ) untuk menangkap dan menganalisis pemanggilan yang gagal.

Target template vs universal

Jika Anda menerima kesalahan seperti “Permintaan tidak valid disediakan: [layanan] bukan layanan yang didukung untuk target”, Anda mungkin mencoba menggunakan layanan yang tidak didukung sebagai target templat.

Untuk mengatasi ini:

  1. Periksa apakah layanan yang Anda inginkan didukung sebagai target template.

  2. Jika tidak didukung, gunakan target universal sebagai gantinya dan konfigurasikan untuk membuat panggilan API yang sesuai ke layanan Anda.

Jadwalkan pembaruan yang memicu pemanggilan yang tidak terduga

Saat Anda membuat perubahan pada jadwal, pemanggilan mungkin tidak langsung mencerminkan jadwal yang diperbarui. Tunggu sebentar hingga perubahan diterapkan. Misalnya, jika Anda memperbarui jadwal mendekati waktu pemicu aslinya, Anda mungkin melihat pemanggilan berdasarkan konfigurasi jadwal asli.

Menonaktifkan atau mengaktifkan jadwal satu kali

Ketika mengaktifkan kembali jadwal satu kali setelah waktu yang dijadwalkan semula telah berlalu, jadwal dapat segera memanggil targetnya. Ini dapat terjadi bahkan jika jadwal dinonaktifkan sebelum waktu eksekusi aslinya.

Contoh:

  • Waktu sekarang: 13:15 UTC

  • Jadwal satu kali dibuat untuk: 13:30 UTC

  • Jadwal dinonaktifkan sebelum 13:30 UTC

  • Jadwal diaktifkan kembali pada pukul 14:00 UTC

  • Hasil: Target dapat dipanggil segera setelah mengaktifkan kembali