翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon SWF でのエラー処理
ワークフローの実行中に発生する可能性のあるさまざまな種類のエラーがあります。
検証エラー
検証エラーは、正しく構成されていないか、無効なデータが含まれているため、Amazon SWF へのリクエストが失敗した場合に発生します。このコンテキストでは、リクエストは DescribeDomain
などのアクション、または StartTimer
などの決定であることもあります。リクエストがアクションの場合、Amazon SWF はレスポンスにエラーコードを返します。このエラーコードをチェックすると、リクエストのどの部分がエラーを引き起こしたかに関する情報が提供される可能性があります。たとえば、リクエストで渡された 1 つ以上の引数が無効である可能性があります。一般的なエラーコードのリストについては、「Amazon Simple Workflow Service API Reference」(Amazon Simple Workflow Service API リファレンス) のアクションのトピックにアクセスしてください。
失敗したリクエストが決定の場合は、適切なイベントがワークフロー実行履歴に表示されます。たとえば、StartTimer
決定が失敗した場合は、履歴に StartTimerFailed
イベントが表示されます。ディサイダーは、PollForDecisionTask
または GetWorkflowExecutionHistory
の応答として履歴を受け取るときに、これらのイベントをチェックする必要があります。以下は、決定の形式が正しくないか、無効なデータが含まれている場合に発生する可能性のある決定失敗イベントのリストです。
アクションまたは決定を実行する際のエラー
リクエストが正しい形式でも、Amazon SWF がリクエストを実行しようとするとエラーが発生することがあります。このような場合、履歴内の次のいずれかのイベントが、エラーが発生したことを示します。イベントの reason
フィールドを調べて、障害の原因を特定します。
タイムアウト
ディサイダー、アクティビティワーカー、およびワークフロー実行は、すべてタイムアウト期間の制約内で動作します。このタイプのエラーでは、タスクまたは子ワークフローがタイムアウトします。タイムアウトを説明するイベントが履歴に表示されます。ディサイダーは、たとえば、タスクの再スケジュールや子ワークフローの再開などによってこのイベントを処理する必要があります。タイムアウトの詳細については、Amazon SWF タイムアウトの種類 を参照してください。
ユーザーコードによって発生したエラー
このタイプのエラー状態の例は、アクティビティタスクの失敗と子ワークフローの失敗です。タイムアウトエラーと同様に、Amazon SWF はワークフロー実行履歴に適切なイベントを追加します。ディサイダーは、タスクの再スケジュールや子ワークフローの再開などによってこのイベントを処理する必要があります。
ワークフロー実行の終了に関連するエラー
ディサイダーが保留中の決定タスクのあるワークフローを終了しようとすると、以下のイベントが表示されることがあります。
上記のイベントの詳細については、「Amazon SWF API Reference」(Amazon SWF API リファレンス) の「History Event」(履歴イベント) を参照してください。