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
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
Topik
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 |
|
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 |
|
Contoh: Pipeline tempat Anda mencoba menambahkan pekerjaan tidak ada atau masih dibuat. | Tidak |
409 | InUse Pengecualian Sumber Daya |
|
Contoh: Anda mencoba menghapus pipeline yang saat ini sedang digunakan. | Tidak |
429 | Batas Terlampaui pengecualian |
|
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 menetapkan
Job:Status
Outputs: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:
|
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 berbedaPaddingPolicy SizingPolicy ,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 ,,SizingPolicy MaxWidth , 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 ID
Nilai 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