サポート終了通知: 2025 年 11 月 13 日に、 AWS は Amazon Elastic Transcoder のサポートを終了します。2025 年 11 月 13 日以降、Elastic Transcoder コンソールまたは Elastic Transcoder リソースにアクセスできなくなります。
への移行の詳細については AWS Elemental MediaConvert、このブログ記事
翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Elastic Transcoder でのエラー処理
リクエストを送信して Elastic Transcoder API からの応答を取得するとき、以下の 2 種類の API エラーが発生する場合があります。
-
クライアントエラー: クライアントエラーは 4xx HTTP 応答コードで示されます。クライアントエラーは、Elastic Transcoder によってクライアントリクエストについての問題 (認証の違反や必須パラメータの不足など) が検出されたことを示します。リクエストを再度送信する前に、クライアントアプリケーションで問題を修正します。
-
サーバーエラー: サーバーエラーは 5xx HTTP 応答コードで示され、Amazon が解決する必要があります。リクエストは、成功するまで再送信/再試行することができます。
各 API エラーについて、Elastic Transcoder によって以下の値が返されます。
-
ステータスコード(
400
など) -
エラーコード(
ValidationException
など) -
エラーメッセージ(
Supplied AttributeValue is empty, must contain exactly one of the supported datatypes
など)
クライアントとサーバーのエラーについて Elastic Transcoder によって返されるエラーコードのリストについては、「API のエラーコード(クライアントエラーとサーバーエラー)」を参照してください。
さらに、Elastic Transcoder によるジョブの処理中にエラーが発生する場合があります。詳細については、「ジョブ処理中のエラー」を参照してください。
API のエラーコード(クライアントエラーとサーバーエラー)
HTTP ステータスコードは、特定のオペレーションが成功したかどうかを示しています。
応答コード 200
は、オペレーションが成功したことを示します。その他のエラーコードは、クライアントエラー(4xx)またはサーバーエラー(5xx)を示します。
以下の表に、Elastic Transcoder によって返されるエラーを示します。一部のエラーは、同じリクエストを再試行することで解決されます。この表は、連続的な再試行によって解決する可能性が高いエラーを示しています。[Retry (リトライ)] 列の値は次のことを示しています。
-
Yes: 同じリクエストを再び送信します。
-
No: 新しいリクエストの送信前にクライアント側で問題を解決します。
リクエストの再試行の詳細については、「エラーの再試行とエクスポネンシャルバックオフ」を参照してください。
HTTP ステータスコード | エラーコード | Message | 原因 | 再試行 |
---|---|---|---|---|
400 | Conditional Check Failed Exception | 条件付きリクエストが失敗しました。 | 例: 期待値がシステムに格納されている値に一致しませんでした。 | No |
400 | Incomplete Signature Exception | リクエストの署名が AWS 基準に適合しません。 | リクエスト内の署名に、必要なすべての要素が含まれていませんでした。「HTTP ヘッダーの内容」を参照してください。 | No |
403 | Missing Authentication Token Exception | The request must contain a valid (registered) AWS Access Key ID。 | 必要な x-amz-security-token がリクエストに含まれていませんでした。「Elastic Transcoder に対する HTTP リクエストの作成」を参照してください。 |
No |
400 | Validation Exception | 各種の値。 | リクエストで 1 つ以上の値が見つからないか無効でした。たとえば、空の値があるか、最大許容の値よりも大きい値があります。 | No |
403 | AccessDenied Exception |
|
システムプリセットを削除しようとしたか、Elastic Transcoder API 呼び出し時の署名が無効であったか、ユーザーにこのオペレーションの実行許可がありません。 |
No |
404 | ResourceNot Found Exception |
|
例: ジョブを追加しようとしているパイプラインが存在しないか、まだ作成中です。 | No |
409 | Resource InUse Exception |
|
例: 現在使用中のパイプラインを削除しようとしました。 | No |
429 | Limit Exceeded Exception |
|
現在の AWS アカウントが Elastic Transcoder オブジェクトの制限を超えました。詳細については、「Elastic Transcoder パイプライン、ジョブ、プリセットの数の制限」を参照してください。 | |
429 | Provisioned Throughput Exceeded Exception | プロビジョニングされたスループットが許容されている最大値を超えました。 |
例: リクエストの頻度が多すぎます。Elastic Transcoder の AWS SDK は、この例外を受け取ったリクエストを自動的に再試行します。リクエストは最終的に成功しますが、再試行キューが大きすぎて終了しない場合もあります。リクエストの頻度を少なくしてください。詳細については、「エラーの再試行とエクスポネンシャルバックオフ」を参照してください。 ポーリングによりリクエストのステータスを調べている場合は、通知を使用してステータスを調べることを検討してください。詳細については、「ジョブのステータスの通知」を参照してください。 |
Yes |
429 | Throttling Exception | リクエストの速度が、許容されているスループットを超えています。 |
リクエスト (新しいジョブの作成リクエストなど) の送信が速すぎます。 ポーリングによりリクエストのステータスを調べている場合は、通知を使用してステータスを調べることを検討してください。詳細については、「ジョブのステータスの通知」を参照してください。 |
Yes |
500 | 内部エラー | リクエストの処理中にサーバーで内部エラーが発生しました。 | リクエストの処理中にサーバーでエラーが発生しました。 | Yes |
500 | Internal Server Error | リクエストの処理中にサーバーで内部エラーが発生しました。 | リクエストの処理中にサーバーでエラーが発生しました。 | Yes |
500 | Internal Service Exception | リクエストの処理中にサーバーで予期せぬエラーが発生しました。 | Yes | |
500 | Service Unavailable Exception | サービスが現在利用できないかビジー状態です。 | リクエストの処理中にサーバーで予期しないエラーが発生しました。 | Yes |
エラー応答のサンプル
以下の HTTP 応答は、inputBucket
の値が null であり、有効な値でなかったことを示しています。
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"}
ジョブ処理中のエラー
ジョブの処理中に Elastic Transcoder でエラーが発生したときは、以下の 2 つの方法でエラーがレポートされます。
-
ジョブステータスと出力ステータス: Elastic Transcoderは、違反した出力の
Job:Status
オブジェクトとOutputs:Status
オブジェクトをError
に設定します。さらに、Elastic Transcoder によって、違反した出力のOutputs:StatusDetail
JSON オブジェクトが、違反を説明する値に設定されます。 -
SNS 通知: Elastic Transcoder で処理中にエラーが発生した場合に SNS 通知が送信されるようにパイプラインを設定した場合、Elastic Transcoder により JSON オブジェクトが次の形式で通知に含められます。
{ "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
" } }
値として個格納できます。errorCode |
値として個格納できます。messageDetails |
原因 |
---|---|---|
1,000 | 検証エラー | ジョブの処理中、Elastic Transcoder によってリクエスト内の 1 つ以上の値が無効であると判断されました。 |
1001 | 依存関係のエラー | プレイリストの依存関係の 1 つ以上でエラーが発生したため、Elastic Transcoder はプレイリストを作成できませんでした。 |
2000 | Cannot Assume Role | このジョブのパイプラインの Role オブジェクトで指定した AWS Identity and Access Management ロールを Elastic Transcoder は推定できませんでした。 |
3000 | Unclassified Storage Error | |
3001 | Input Does Not Exist | このジョブの Input:Key オブジェクトで指定した名前のファイルは存在しません。そのファイルは、このジョブのパイプラインの InputBucket オブジェクトで指定した Amazon S3 バケットに存在します。 |
3002 | Output Already Exists | このジョブの Outputs:Key (または Output:Key )オブジェクトで指定した名前のファイルはすでに存在します。そのファイルは、このジョブのパイプラインの OutputBucket オブジェクトで指定した Amazon S3 バケットに存在することはできません。 |
3003 | Does Not Have Read Permission | このジョブに使用したパイプラインの Role オブジェクトで指定した IAM ロールに、トランスコードするファイルを Amazon S3 バケットから読み取るためのアクセス許可がありません。 |
3004 | Does Not Have Write Permission | このジョブに使用したパイプラインの Role オブジェクトで指定した IAM ロールに、トランスコードしたファイルまたはサムネイルファイルを Amazon S3 バケットに書き込むためのアクセス許可がありません。 |
3005 | Bucket Does Not Exist | 指定された S3 バケットが存在しません: bucket={1} |
3006 | Does Not Have Write Permission | キーがバケットと同じリージョンにないため、Elastic Transcoder では key={1} を bucket={2} に書き込むことができませんでした。 |
4000 | Bad Input File | このジョブの Input:Key オブジェクトで指定したファイルの形式は、Elastic Transcoder では現在サポートされていません。 |
4001 | Bad Input File | このジョブの Input:Key オブジェクトで指定したファイルの幅 x 高さが最大許容の幅 x 高さを超えています。 |
4002 | Bad Input File | このジョブの Input:Key オブジェクトで指定したファイルのサイズが最大許容のサイズを超えています。 |
4003 | Bad Input File | このジョブの Outputs:Watermarks:InputKey オブジェクトのいずれかで指定したファイルが Elastic Transcoder で解釈されませんでした。 |
4004 | Bad Input File | このジョブの Outputs:Watermarks:InputKey オブジェクトのいずれかで指定したファイルの幅 x 高さが最大許容の幅 x 高さを超えています。 |
4005 | Bad Input File | {1} オブジェクトのいずれかに指定したファイルのサイズが最大許容のサイズを超えています: bucket={2}、key={3}、size{4}、max size={5} |
4006 | Bad Input File | Elastic Transcoder で入力ファイルのトランスコードが実行されませんでした。この形式はサポートされていません。 |
4007 | Unhandled Input File | Elastic Transcoder によって、一般的にサポートされているファイルのタイプが検出されましたが、ファイルが正しく処理されませんでした。このエラーによってサポートケースが自動的に開かれ、Amazon が問題の原因調査を開始しました。 |
4008 | Bad Input File |
根本的な原因はプリセットと入力ファイルとの不一致です。その例を以下に示します。
|
4009 | Bad Input File | Elastic Transcoder でアルバムアートのすべてを出力ファイルに挿入できませんでした。アートワークストリームの最大数を超えています。 |
4010 | Bad Input File | AlbumArt:Artwork:InputKey に指定したグラフィックファイルが Elastic Transcoder で解釈されませんでした。 |
4011 | Bad Input File | Elastic Transcoder で埋め込みアートワークストリームが検出されましたが、解釈されませんでした。 |
4012 | Bad Input File | AlbumArt:Artwork に指定した画像が最大許容の幅 x 高さ (4,096 x 3,072) を超えています。 |
4013 | Bad Input File | 埋め込みアートワークの幅 x 高さが最大許容の幅 x 高さ (4,096 x 3,072) を超えています。 |
4014 | Bad Input | クリップの開始時間に指定した値が入力ファイルの終了時間より後になっています。Elastic Transcoder で出力ファイルを作成できませんでした。 |
4015 | Bad Input | 生成されたセグメントが一致しなかったため、Elastic Transcoder によりマニフェストファイルが生成されませんでした。 |
4016 | Bad Input | Elastic Transcoder で、{2} を使用して {1} から入力ファイルを復号できませんでした。 |
4017 | Bad Input | AES キーは {2} ビット暗号化キーを使用して暗号化されています。AES では、128、192、256 ビットの暗号化キーのみをサポートしています。MD5={1} |
4018 | Bad Input | MD5={1} を使用して暗号化されたキーが Elastic Transcoder で復号できませんでした。 |
4019 | Bad Input | Elastic Transcoder で、KMS キーの ARN \{0} を使用してデータキーを生成できませんでした。 |
4020 | Bad Input | AES-128 暗号化では、キーが 128 ビットである必要があります。MD5={1}、{2} ビット。 |
4021 | Bad Input | PlayReady DRM では、キーが 128 ビットである必要があります。MD5={1}、strength={2} ビット。 |
4022 | Bad Input | 指定されたメディアファイル {1} 個の結合サイズが最大許容サイズを超えています: bucket={2}、size={3}。 |
4023 | Bad Input | 連結のために指定された {1} 個の入力ファイルから、指定されたプリセットで一貫した解像度の出力が作成されません。異なる PaddingPolicy 、SizingPolicy 、MaxWidth 、MaxHeight 設定のプリセットを使用してください。 |
4024 | Bad Input | 連結のために指定された {1} 個の入力ファイルから、指定されたプリセットで一貫した解像度のサムネイルが作成されません。サムネイルの異なる PaddingPolicy 、SizingPolicy 、MaxWidth 、MaxHeight 設定のプリセットを使用してください。 |
4025 | Bad Input | 少なくとも 1 つのメディアファイル (入力 #{1}) が他のファイルと一致しません。すべてのメディアファイルに動画が含まれているか、どのメディアファイルにも動画が含まれていないことが必要です。 |
4026 | Bad Input | 少なくとも 1 つのメディアファイル (入力 #{1}) が他のファイルと一致しません。すべてのメディアファイルに音声が含まれているか、どのメディアファイルにも音声が含まれていないことが必要です。 |
4100 | Bad Input File | Elastic Transcoder によって埋め込みキャプショントラックが検出されましたが、解釈されませんでした。 |
4101 | Bad Input File | Amazon S3 bucket={1}、key={2} の指定のキャプションファイルが Elastic Transcoder で解釈されませんでした。 |
4102 | Bad Input File | 指定のキャプションファイルが UTF-8 でエンコードされていなかったため Elastic Transcoder で解釈されませんでした: Amazon S3 bucket={1}、key={2} |
4103 | Bad Input File | キャプショントラックの一部がキャプショントラックの最大数 ({1}) を超えたため、Elastic Transcoder で処理されませんでした。 |
4104 | Bad Input File | 指定の出力に {1} 個の埋め込みキャプションオプションが含まれていたため、Elastic Transcoder によってマスタープレイリストが生成されませんでした。最大個数は 4 です。 |
4105 | Bad Input File | CEA-708 でフレームレート {1} はサポートされていないため、Elastic Transcoder でキャプショントラックが埋め込まれませんでした。フレームレート [29.97, 30] のみがサポートされています。 |
4106 | Bad Input File | 形式 {1} では {2} キャプショントラックしかサポートされていないため、Elastic Transcoder によってキャプショントラックが埋め込まれませんでした。 |
9000 | Internal Service Error | |
9001 | Internal Service Error | |
9999 | Internal Service Error |
エラーの捕捉
アプリケーションをスムーズに実行するには、エラーを見つけ、エラーに対応するロジックを組み込む必要があります。1 つの一般的なアプローチとしては、try
ブロックまたは if-then
ステートメントにリクエストを実装する方法が挙げられます。
AWS SDK は独自に再試行とエラーチェックを実行します。いずれかの AWS SDK の使用中にエラーが発生した場合は、エラーコードと説明が表示されます。また Request ID
の値も表示されます。Request ID
の値は、Elastic Transcoder のサポートによって問題のトラブルシューティングを行うために役立ちます。
次の例では、AWS SDK for Java を使用して try
ブロック内の項目を削除し、catch
ブロックを使用してエラーに対応しています。この場合、リクエストが失敗したと警告されます。この例では AmazonServiceException
クラスを使用して、Request ID
を含むオペレーションエラーに関する情報を取り出しています。さらにこの例では、その他の理由でリクエストが失敗した場合のために、AmazonClientException
クラスも使用されています。
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()); }
エラーの再試行とエクスポネンシャルバックオフ
DNS サーバー、スイッチ、ロードバランサーなど、ネットワークの多数のコンポーネントが、特定のリクエストの存続期間中どこでもエラーを生成する可能性があります。
ネットワーク環境でこれらのエラー応答を処理する通常の方法は、クライアントアプリケーションで再試行を実装することです。この技術は、アプリケーションの信頼性を向上させ、開発者の運用コストを削減します。
Elastic Transcoder をサポートする各 AWS SDK には自動再試行ロジックが実装されています。AWS SDK for Java は自動的にリクエストを再試行します。再試行は、ClientConfiguration
クラスを使用して設定できます。たとえば、ウェブページが最小のレイテンシーで再試行なしでリクエストを実行する場合などに、再試行ロジックを停止させることがあります。再試行を無効にするには、ClientConfiguration
クラスを使用し、maxErrorRetry
の 0
値を指定します。
AWS SDK を使用していない場合は、サーバーエラー (5xx) を受け取る元のリクエストを再試行する必要があります。ただし、クライアントエラー (4xx、ThrottlingException
または ProvisionedThroughputExceededException
以外) は、再試行する前にリクエスト自体を修正して問題を解決する必要があることを示しています。
注記
ポーリングによりリクエストのステータスを調べているとき、Elastic Transcoder によって HTTP ステータスコード 429 (エラーコード Provisioned Throughput Exceeded
Exception
または Throttling Exception
) が返される場合は、ポーリングの代わりに通知を使用してステータスを調べることを検討してください。詳細については、「ジョブのステータスの通知」を参照してください。
単純な再試行に加えて、効果的なフロー制御を行うために、エクスポネンシャルバックオフアルゴリズムを使用することをお勧めします。エクスポネンシャルバックオフの背後にある考え方は、連続したエラー応答の再試行間の待機時間を徐々に長く使用することです。たとえば、最初の再試行前に 1 秒間、2 回目の再試行前に 4 秒間、3 回目の再試行前に 16 秒間というように、待機時間を指定します。ただし、リクエストが 1 分後に成功しなかった場合、問題はハードリミットであり、リクエストの頻度でない可能性があります。たとえば、最大許可のパイプライン数に達した可能性があります。1 分程度で再試行が停止するように最大回数を設定します。
次に、再試行ロジックが含まれたワークフローを示します。このワークフローロジックでは、最初にそのエラーがサーバーエラー (5xx) であるかどうかが判別されます。エラーがサーバーエラーである場合は、コードによって元のリクエストが再試行されます。
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