Penanganan Kesalahan di Elastic Transcoder - Amazon Elastic Transcoder

Hemat biaya dan dapatkan lebih banyak fitur dengan AWS Elemental MediaConvert

MediaConvert adalah layanan transcoding video berbasis file yang lebih baru yang menyediakan rangkaian lengkap fitur transcoding canggih, dengan tarif sesuai permintaan mulai dari $0,0075/menit. Baca lebih lanjut.

Sudah menggunakan Amazon Elastic Transcoder? Sangat mudah untuk bermigrasi ke MediaConvert. Untuk informasi selengkapnya, lihat ikhtisar ini yang mencakup informasi berharga tentang proses migrasi dan tautan ke sumber daya tambahan.

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

Penanganan Kesalahan di Elastic Transcoder

Ketika Anda mengirim permintaan ke dan mendapatkan respons dari Elastic Transcoder API, Anda mungkin mengalami dua jenis kesalahan API:

  • Kesalahan klien: Kesalahan klien ditunjukkan dengan kode respons HTTP 4xx. Kesalahan klien menunjukkan bahwa Elastic Transcoder menemukan masalah dengan permintaan klien, seperti kegagalan otentikasi atau parameter yang diperlukan hilang. Perbaiki masalah di aplikasi klien sebelum mengirimkan permintaan lagi.

  • Kesalahan server: Kesalahan server ditunjukkan oleh kode respons HTTP 5xx, dan harus diselesaikan oleh Amazon. Anda dapat mengirimkan ulang/mencoba ulang permintaan hingga berhasil.

Untuk setiap kesalahan API, Elastic Transcoder mengembalikan nilai berikut:

  • Kode status, misalnya,400

  • Kode kesalahan, misalnya,ValidationException

  • Pesan kesalahan, misalnya,Supplied AttributeValue is empty, must contain exactly one of the supported datatypes

Untuk daftar kode kesalahan yang dikembalikan Elastic Transcoder untuk kesalahan klien dan server, lihatKode Kesalahan API (Kesalahan Klien dan Server).

Selain itu, Anda mungkin mengalami kesalahan saat Elastic Transcoder memproses pekerjaan Anda. Untuk informasi selengkapnya, lihat Kesalahan Selama Pemrosesan Job.

Kode Kesalahan API (Kesalahan Klien dan Server)

Kode status HTTP menunjukkan apakah suatu operasi berhasil atau tidak.

Kode respons200 menunjukkan operasi berhasil. Kode kesalahan lainnya menunjukkan kesalahan klien (4xx) atau kesalahan server (5xx).

Tabel berikut mencantumkan kesalahan yang dikembalikan oleh Elastic Transcoder. Beberapa kesalahan diselesaikan jika Anda hanya mencoba lagi permintaan yang sama. Tabel menunjukkan kesalahan mana yang kemungkinan akan diselesaikan dengan percobaan ulang berturut-turut. Jika nilai kolom Coba Ulang adalah:

  • Ya: Kirim permintaan yang sama lagi.

  • Tidak: Perbaiki masalah di sisi klien sebelum mengirimkan permintaan baru.

Untuk informasi lebih lanjut tentang permintaan mencoba ulang permintaan, lihatPengulangan Kesalahan dan Backoff Eksponensial.

Kode Status HTTP Kode eror Message Penyebab Coba lagi
400 Pengecualian Gagal Pemeriksaan Bersyarat Permintaan bersyarat gagal. Contoh: Nilai yang diharapkan tidak sesuai dengan apa yang disimpan dalam sistem. Tidak
400 Pengecualian Tanda Tangan Tidak Lengkap Tanda tangan yang diminta tidak sesuai dengan standar AWS. Tanda tangan dalam permintaan tidak mencakup semua komponen yang diperlukan. Lihat Konten Header HTTP. Tidak
403 Pengecualian Token Autentikasi Hilang Permintaan harus berisi Access key ID yang valid (terdaftar). Permintaan tidak termasuk yang diperlukanx-amz-security-token. Lihat Membuat Permintaan HTTP ke Elastic Transcoder. Tidak
400 Pengecualian Validasi Beragam. Satu atau lebih nilai dalam permintaan hilang atau tidak valid; misalnya, nilai kosong atau lebih besar dari nilai valid maksimum. Tidak
403 AccessDenied Pengecualian
  • Menghapus preset sistem tidak diperbolehkan: account=<accountId>, preseTid=<presetId>.

  • Kegagalan otentikasi umum. Klien salah menandatangani permintaan. Lihat Menandatangani Permintaan.

Anda mencoba untuk menghapus preset sistem, tanda tangan dalam panggilan ke Elastic Transcoder API tidak valid, atau pengguna tidak diizinkan untuk melakukan operasi.

Tidak
404 ResourceNot Ditemukan Pengecualian
  • Yang ditentukan <resource>tidak dapat ditemukan:<resourceId>.

  • Pekerjaan yang ditentukan tidak ditemukan: account=<accountId>, jobId =<jobId>.

  • Pipa yang ditentukan tidak ditemukan: akun =<accountId>, pipelineID= <pipelineId>

  • Preset yang ditentukan tidak ditemukan: account=<accountId>, preseTid= <presetId>

Contoh: Pipeline tempat Anda mencoba menambahkan pekerjaan tidak ada atau masih dibuat. Tidak
409 InUse Pengecualian Sumber Daya
  • <resource>Itu sudah digunakan: accountId=<accountId>, ResourceID=<resourceId>.

  • Pipeline berisi pekerjaan aktif: account =<accountId>, pipeline=<pipelineId>.

Contoh: Anda mencoba menghapus pipeline yang saat ini sedang digunakan. Tidak
429 Batas Terlampaui pengecualian
  • Akun sudah memiliki jumlah pipa maksimum yang diizinkan: akun =<accountId>, jumlah pipa maksimum = <maximum>

  • Akun sudah memiliki jumlah maksimum preset yang diizinkan: akun =<accountId>, jumlah maksimum preset= <maximum>

  • Akun sudah memiliki jumlah maksimum pekerjaan per pipa di backlog: account =<accountId>, jumlah maksimum pekerjaan di backlog untuk pipeline= <maximum>

Akun AWS saat ini telah melampaui batas pada objek Elastic Transcoder. Untuk informasi selengkapnya, lihat Batas Jumlah Pipa Elastic Transcoder, Pekerjaan, dan Preset.
429 Throughput yang Disediakan Terlampaui Pengecualian Anda melebihi throughput yang disediakan maksimum milik Anda.

Contoh: Tingkat permintaan Anda terlalu tinggi. SDK AWS untuk Elastic Transcoder secara otomatis mengulangi permintaan yang menerima pengecualian ini. Permintaan Anda akhirnya berhasil kecuali antrian percobaan ulang terlalu banyak untuk diselesaikan. Kurangi frekuensi permintaan. Untuk informasi selengkapnya, lihat Pengulangan Kesalahan dan Backoff Eksponensial.

Jika Anda melakukan polling untuk menentukan status permintaan, pertimbangkan untuk menggunakan notifikasi untuk menentukan status. Untuk informasi selengkapnya, lihat Pemberitahuan Status Job.

Ya
429 Pengecualian Throttling Tingkat permintaan melebihi throughput yang diizinkan.

Anda mengirimkan permintaan terlalu cepat; misalnya, permintaan untuk membuat pekerjaan baru.

Jika Anda melakukan polling untuk menentukan status permintaan, pertimbangkan untuk menggunakan notifikasi untuk menentukan status. Untuk informasi selengkapnya, lihat Pemberitahuan Status Job.

Ya
500 Kegagalan Internal ternal Server mengalami kesalahan internal yang mencoba memenuhi permintaan. Server mengalami kesalahan saat memproses permintaan Anda. Ya
500 Kesalahan Server Internal Server mengalami kesalahan internal yang mencoba memenuhi permintaan. Server mengalami kesalahan saat memproses permintaan Anda. Ya
500 Pengecualian Layanan Internal ternal Layanan mengalami pengecualian yang tidak terduga saat mencoba memenuhi permintaan. Ya
500 Pengecualian Layanan Tidak Tersedia Layanan saat ini tidak tersedia atau sibuk. Ada kesalahan tak terduga di server saat memproses permintaan Anda. Ya

Respons Kesalahan Sampel

Berikut ini adalah respon HTTP yang menunjukkan bahwa nilai untukinputBucket itu null, yang bukan nilai yang valid.

HTTP/1.1 400 Bad Request x-amzn-RequestId: b0e91dc8-3807-11e2-83c6-5912bf8ad066 x-amzn-ErrorType: ValidationException Content-Type: application/json Content-Length: 124 Date: Mon, 26 Nov 2012 20:27:25 GMT {"message":"1 validation error detected: Value null at 'inputBucket' failed to satisfy constraint: Member must not be null"}

Kesalahan Selama Pemrosesan Job

Ketika Elastic Transcoder mengalami kesalahan saat memproses pekerjaan Anda, Elastic Transcoder melaporkan kesalahan dalam dua cara:

  • Status Job dan Status Output: Elastic Transcoder menetapkanJob:StatusOutputs:Status objek dan objek untuk output gagalError. Selain itu, Elastic Transcoder menetapkan objekOutputs:StatusDetail JSON untuk output gagal ke nilai yang menjelaskan kegagalan.

  • Pemberitahuan SNS: Jika Anda mengonfigurasi pipeline untuk mengirim notifikasi SNS saat Elastic Transcoder mengalami kesalahan selama pemrosesan, Elastic Transcoder menyertakan objek JSON dalam notifikasi dalam format berikut:

    { "state" : "PROGRESSING|COMPLETED|WARNING|ERROR", "errorCode" : "the code of any error that occurred", "messageDetails" : "the notification message you created in Amazon SNS", "version" : "API version that you used to create the job", "jobId" : "value of Job:Id object that Elastic Transcoder returns in the response to a Create Job request", "pipelineId" : "value of PipelineId object in the Create Job request", "input" : { job Input settings }, "outputKeyPrefix" : "prefix for file names in Amazon S3 bucket", "outputs": [ { applicable job Outputs settings, "status" : "Progressing|Complete|Warning|Error" }, {...} ], "playlists": [ { applicable job playlists settings } ], "userMetadata": { "metadata key": "metadata value" } }
Nilai darierrorCode Nilai darimessageDetails Penyebab
1000 Kesalahan Validasi Saat memproses pekerjaan, Elastic Transcoder menentukan bahwa satu atau lebih nilai dalam permintaan tidak valid.
1001 Kesalahan Ketergantungan Elastic Transcoder tidak dapat menghasilkan daftar putar karena mengalami kesalahan dengan satu atau lebih dependensi daftar putar.
2000 Tidak Dapat Mengambil Peran Elastic Transcoder tidak dapat mengasumsikanAWS Identity and Access Management peran yang ditentukan dalamRole objek dalam pipa untuk pekerjaan ini.
3000 Kesalahan Penyimpanan Tidak Diklasifikasi
3001 Input Tidak Ada Tidak ada file yang ada dengan nama yang Anda tentukan dalamInput:Key objek untuk pekerjaan ini. File harus ada di bucket Amazon S3 yang ditentukan dalamInputBucket objek dalam pipeline untuk pekerjaan ini.
3002 Output Sudah Ada Sebuah file sudah ada dengan nama yang Anda tentukan dalamOutputs:Key (orOutput:Key) objek untuk pekerjaan ini. File tidak dapat ada di bucket Amazon S3 yang ditentukan dalamOutputBucket objek dalam pipeline untuk pekerjaan ini.
3003 Tidak Memiliki Izin Baca Peran IAM yang ditentukan dalamRole objek dalam pipeline yang Anda gunakan untuk pekerjaan ini tidak memiliki izin untuk membaca dari bucket Amazon S3 yang berisi file yang ingin Anda transkodekan.
3004 Tidak Memiliki Izin Menulis Peran IAM yang ditentukan dalamRole objek dalam pipeline yang Anda gunakan untuk pekerjaan ini tidak memiliki izin untuk menulis ke bucket Amazon S3 tempat Anda ingin menyimpan file transkode atau file thumbnail.
3005 Bucket Tidak Ada Bucket S3 yang ditentukan tidak ada: bucket= {1}.
3006 Tidak Memiliki Izin Menulis Elastic Transcoder tidak dapat menulis kunci= {1} ke bucket= {2}, karena kuncinya tidak berada di wilayah yang sama dengan bucket
4000 File Input buruk File yang Anda tentukan dalamInput:Key objek untuk pekerjaan ini adalah dalam format yang saat ini tidak didukung oleh Elastic Transcoder.
4001 File Input buruk Lebar x tinggi file yang Anda tentukan dalamInput:Key objek untuk pekerjaan ini melebihi lebar x tinggi maksimum yang diizinkan.
4002 File Input buruk Ukuran file file yang Anda tentukan dalamInput:Key objek untuk pekerjaan ini melebihi ukuran maksimum yang diizinkan.
4003 File Input buruk Elastic Transcoder tidak dapat menafsirkan file yang Anda tentukan di salah satuOutputs:Watermarks:InputKey objek untuk pekerjaan ini.
4004 File Input buruk Lebar x tinggi file yang Anda tentukan di salah satuOutputs:Watermarks:InputKey objek untuk pekerjaan ini melebihi lebar x tinggi maksimum yang diizinkan.
4005 File Input buruk Ukuran file yang Anda tentukan untuk salah satu objek {1} melebihi ukuran maksimum yang diizinkan: bucket= {2}, key= {3}, size {4}, max size= {5}.
4006 File Input buruk Elastic Transcoder tidak dapat mentranskode berkas masukan karena format tidak didukung.
4007 File Input yang Tidak Tertangani Elastic Transcoder mengalami jenis file yang umumnya didukung, tetapi tidak dapat memproses file dengan benar. Kesalahan ini secara otomatis membuka kasus dukungan, dan kami sudah mulai meneliti penyebab masalahnya.
4008 File Input buruk

Penyebab yang mendasari ini adalah ketidakcocokan antara preset dan file input. Contohnya termasuk:

  • Preset mencakup pengaturan audio, tetapi file input tidak memiliki audio.

  • Preset mencakup pengaturan video, tetapi file input tidak memiliki video.

4009 File Input buruk Elastic Transcoder tidak dapat memasukkan semua seni album Anda ke dalam file keluaran karena Anda melebihi jumlah maksimum aliran karya seni.
4010 File Input buruk Elastic Transcoder tidak dapat menafsirkan file grafis yang Anda tentukanAlbumArt:Artwork:InputKey.
4011 File Input buruk Elastic Transcoder mendeteksi aliran karya seni tertanam, tetapi tidak dapat menafsirkannya.
4012 File Input buruk Gambar yang Anda tentukanAlbumArt:Artwork melebihi lebar x tinggi maksimum yang diizinkan: 4096 x 3072.
4013 File Input buruk Lebar x tinggi karya seni yang disematkan melebihi lebar x tinggi maksimum yang diizinkan: 4096 x 3072.
4014 Masukan Buruk Nilai yang Anda tentukan untuk waktu mulai klip adalah setelah akhir file input. Elastic Transcoder tidak dapat membuat berkas keluaran.
4015 Masukan Buruk Elastic Transcoder tidak dapat menghasilkan file manifes karena segmen yang dihasilkan tidak cocok.
4016 Masukan Buruk Elastic Transcoder tidak dapat mendekripsi file input dari {1} menggunakan {2}.
4017 Masukan Buruk Kunci AES dienkripsi dengan kunci enkripsi {2} -bit. AES hanya mendukung kunci enkripsi 128-, 192-, dan 256-bit. MD5= {1}.
4018 Masukan Buruk Elastic Transcoder tidak dapat mendekripsi kunci sandi dengan MD5= {1}
4019 Masukan Buruk Elastic Transcoder tidak dapat menghasilkan kunci data menggunakan kunci KMS ARN {0}.
4020 Masukan Buruk Kunci Anda harus 128 bit untuk enkripsi AES-128. MD5= {1}, {2} bit.
4021 Masukan Buruk Kunci Anda harus 128 bit untuk PlayReady DRM. MD5= {1}, kekuatan = {2} bit.
4022 Masukan Buruk Ukuran gabungan dari file media yang ditentukan {1} melebihi ukuran maksimum yang diizinkan: bucket= {2}, size= {3}.
4023 Masukan Buruk File input {1} yang ditentukan untuk penggabungan tidak akan membuat output dengan resolusi yang konsisten dengan preset yang ditentukan. Gunakan preset denganMaxHeight pengaturan yang berbedaPaddingPolicySizingPolicy,MaxWidth,, dan.
4024 Masukan Buruk File input {1} yang ditentukan untuk penggabungan tidak akan membuat thumbnail dengan resolusi yang konsisten dengan preset yang ditentukan. Gunakan preset dengan thumbnailPaddingPolicy,,SizingPolicyMaxWidth, danMaxHeight pengaturan yang berbeda.
4025 Masukan Buruk Setidaknya satu file media (input # {1}) tidak cocok dengan yang lain. Semua file media harus memiliki video atau tidak ada video.
4026 Masukan Buruk Setidaknya satu file media (input # {1}) tidak cocok dengan yang lain. Semua file media harus memiliki audio atau tidak ada audio.
4100 File Input buruk Elastic Transcoder mendeteksi trek keterangan tertanam tetapi tidak dapat menafsirkannya.
4101 File Input buruk Elastic Transcoder tidak dapat menafsirkan file teks yang ditentukan untuk Amazon S3 bucket= {1}, key= {2}.
4102 File Input buruk Elastic Transcoder tidak dapat menafsirkan file teks yang ditentukan karena tidak dikodekan UTF-8: Amazon S3 bucket= {1}, key= {2}.
4103 File Input buruk Elastic Transcoder tidak dapat memproses semua trek teks Anda karena Anda melebihi {1}, jumlah maksimum trek teks.
4104 File Input buruk Elastic Transcoder tidak dapat menghasilkan daftar putar utama karena output yang diinginkan berisi {1} keterangan tertanam, ketika maksimum adalah 4.
4105 File Input buruk Elastic Transcoder tidak dapat menyematkan trek teks Anda karena kecepatan bingkai {1} tidak didukung untuk CEA-708 - hanya kecepatan bingkai [29,97, 30] yang didukung.
4106 File Input buruk Elastic Transcoder tidak dapat menyematkan trek teks Anda karena format {1} hanya mendukung {2} track caption (s).
9000 Kesalahan Layanan Internal ternal
9001 Kesalahan Layanan Internal ternal
9999 Kesalahan Layanan Internal ternal

Menangkap Kesalahan

Agar aplikasi Anda berjalan lancar, Anda perlu membangun logika untuk catch dan menanggapi kesalahan. Salah satu pendekatan yang khas adalah untuk menerapkan permintaan Anda dalamtry blok atauif-then pernyataan.

SDK AWS melakukan pemeriksaan pengulangan dan kesalahan mereka sendiri. Jika Anda mengalami kesalahan saat menggunakan salah satu SDK AWS, Anda harus melihat kode kesalahan dan deskripsi. Anda juga harus melihatRequest ID nilai. Request IDNilai dapat membantu memecahkan masalah dengan dukungan Elastic Transcoder.

Contoh berikut menggunakan AWS SDK for Java untuk menghapus item dalamtry blok dan menggunakancatch blok untuk menanggapi kesalahan tersebut. Dalam hal ini, itu memperingatkan bahwa permintaan gagal. Contoh menggunakanAmazonServiceException kelas untuk mengambil informasi tentang kesalahan operasi, termasukRequest ID. Contoh ini juga menggunakanAmazonClientException kelas jika permintaan tidak berhasil karena alasan lain.

try { DeleteJobRequest request = new DeleteJobRequest(jobId); DeleteJobResult result = ET.deleteJob(request); System.out.println("Result: " + result); // Get error information from the service while trying to run the operation } catch (AmazonServiceException ase) { System.err.println("Failed to delete job " + jobId); // Get specific error information System.out.println("Error Message: " + ase.getMessage()); System.out.println("HTTP Status Code: " + ase.getStatusCode()); System.out.println("AWS Error Code: " + ase.getErrorCode()); System.out.println("Error Type: " + ase.getErrorType()); System.out.println("Request ID: " + ase.getRequestId()); // Get information in case the operation is not successful for other reasons } catch (AmazonClientException ace) { System.out.println("Caught an AmazonClientException, which means"+ " the client encountered " + "an internal error while trying to " + "communicate with Elastic Transcoder, " + "such as not being able to access the network."); System.out.println("Error Message: " + ace.getMessage()); }

Pengulangan Kesalahan dan Backoff Eksponensial

Banyak komponen di jaringan, seperti server DNS, sakelar, penyeimbang beban, dan lainnya dapat menghasilkan kesalahan di mana pun selama permintaan tertentu.

Teknik biasa untuk menangani respons kesalahan ini dalam lingkungan jaringan adalah dengan menerapkan percobaan ulang dalam aplikasi klien. Teknik ini meningkatkan keandalan aplikasi dan mengurangi biaya operasional bagi developer.

Setiap SDK AWS mendukung Elastic Transcoder mengimplementasikan logika coba ulang otomatis. AWS SDK for Java secara otomatis mengulangi permintaan dan Anda dapat mengonfigurasi pengaturan coba ulang menggunakanClientConfiguration kelas. Sebagai contoh, dalam beberapa kasus, seperti halaman web membuat permintaan dengan latensi minimal dan tanpa percobaan ulang, Anda mungkin ingin menonaktifkan logika coba ulang. Gunakan kelas ClientConfiguration dan berikan nilai maxErrorRetry 0 untuk mematikan percobaan ulang.

Jika Anda tidak menggunakan SDK AWS, Anda harus mencoba ulang permintaan asli yang menerima kesalahan server (5xx). Namun, kesalahan klien (4xx, selain aThrottlingException atau aProvisionedThroughputExceededException) menunjukkan bahwa Anda perlu merevisi permintaan itu sendiri untuk memperbaiki masalah sebelum mencobanya kembali.

catatan

Jika Anda melakukan polling untuk menentukan status permintaan, dan jika Elastic Transcoder mengembalikan kode status HTTP 429 dengan kode kesalahanProvisioned Throughput Exceeded Exception atauThrottling Exception, pertimbangkan untuk menggunakan notifikasi alih-alih polling untuk menentukan status. Untuk informasi selengkapnya, lihat Pemberitahuan Status Job.

Selain percobaan ulang sederhana, kami sarankan menggunakan algoritme backoff eksponensial untuk kontrol aliran yang lebih baik. Ide di balik backoff eksponensial adalah menggunakan waktu tunggu yang semakin lama antara percobaan ulang untuk respons kesalahan yang berurutan. Sebagai contoh, Anda mungkin membiarkan satu detik sebelum pengulangan pertama, sehingga pengulangan kedua, sehingga 16 detik sebelum pengulangan ketiga, dan seterusnya. Namun, jika permintaan tidak berhasil setelah satu menit, mungkin adalah batas keras dan bukan laju permintaan. Misalnya, Anda mungkin telah mencapai jumlah maksimum saluran pipa yang diizinkan. Mengatur jumlah maksimum pengulangan untuk berhenti sekitar satu menit.

Berikut ini adalah alur kerja yang menunjukkan coba lagi logika. Logika alur kerja pertama menentukan apakah kesalahan adalah kesalahan server (5xx). Kemudian, jika kesalahan adalah kesalahan server, kode mencoba ulang permintaan asli.

currentRetry = 0 DO set retry to false execute Elastic Transcoder request IF Exception.errorCode = ProvisionedThroughputExceededException set retry to true ELSE IF Exception.httpStatusCode = 500 set retry to true ELSE IF Exception.httpStatusCode = 400 set retry to false fix client error (4xx) IF retry = true wait for (2^currentRetry * 50) milliseconds currentRetry = currentRetry + 1 WHILE (retry = true AND currentRetry < MaxNumberOfRetries) // limit retries