すべてのプロダクト
Search
ドキュメントセンター

CloudFlow:エラー処理

最終更新日:Jan 12, 2025

このトピックでは、エラー処理の概要と例について説明します。再試行ポリシーとキャッチポリシーを使用して、一般的なエラーを処理し、ワークフローをより安定させることができます。

概要

CloudFlow のワークフロー統合中に、予期されたエラーまたは予期しないエラーが発生する可能性があります。この場合、現在の状態の操作を続行するか、次の状態に遷移できます。FnF.ALL キーワードは、すべてのエラーをキャッチする特別なオプションです。再試行ポリシーとキャッチポリシーを使用してエラーを処理できます。詳細については、「再試行」と「キャッチ」をご参照ください。

エラー処理をサポートする状態

以下の状態の定義で [再試行] フィールドと [キャッチ] フィールドを使用して、再試行ポリシーとキャッチポリシーを指定し、状態のエラーを処理できます。

説明

CloudFlow は、エラー処理時に常に最初に再試行ポリシーを実行します。再試行ポリシーが失敗した場合、CloudFlow はキャッチポリシーを実行します。

再試行

パラメーター

タイプ

必須

説明

エラー

[]string

はい

発生する可能性のあるエラー。詳細については、「一般的なエラータイプ」をご参照ください。

-MyCustomError

-FnF.ALL

説明

string

はい

再試行ポリシーの名前と説明。

再試行ポリシー #1

最大試行回数

int

はい

最大再試行回数。

3

間隔(秒)

int

はい

再試行間隔。最大値:86400。単位:秒。

10

バックオフ率

float

いいえ

再試行が試行されるたびに、IntervalSeconds パラメーターで指定された再試行間隔が増加する倍率。

2

最大バックオフ秒数

int

いいえ

ワークフローの実行中の最大再試行間隔。最大値:86400。単位:秒。

30

説明

同じエラースタイプに対して複数の再試行ルールを定義した場合、CloudFlow は最初に一致した再試行ルールに基づいてのみ再試行を試みます。

キャッチ

パラメーター

タイプ

必須

説明

エラー

[]string

はい

発生する可能性のあるエラー。詳細については、「一般的なエラータイプ」をご参照ください。

-MyCustomError

-FnF.ALL

説明

string

はい

キャッチポリシーの名前と説明。

エラーキャッチルール #1

OutputConstructor

map[string]any

いいえ

出力コンストラクター。このパラメーターは、Next パラメーターと一緒に使用されます。

OutputConstructor をご参照ください。

次へ

string

はい

指定されたエラーがキャッチされたときにワークフローが戻る状態。

my-next-state

OutputConstructor パラメーターは、Next パラメーターと一緒に使用されます。状態にエラーが発生した場合、その状態では予期される出力は生成されません。ワークフローが次の状態に遷移しても、ワークフローは続行できません。この場合、OutputConstructor パラメーターを使用して出力を構築し、その出力をワークフローが遷移する次の状態への入力として使用できます。

説明

同じエラースタイプに対して複数のキャッチルールを定義した場合、CloudFlow は最初に一致したキャッチルールに基づいてのみキャッチを実行します。

一般的なエラータイプ

CloudFlow が Function Compute と統合されている場合、以下の一般的なエラータイプが発生します。CloudFlow が他のクラウドサービスと統合されている場合に発生するエラータイプの詳細については、対応するサービス統合ドキュメントをご参照ください。

エラータイプ

説明

FC.{エラーコード}

Function Compute が 200 以外の HTTP ステータスコードを返します。一般的なエラータイプ:

  • FC.ResourceThrottled: 関数は、高並行性のために調整されています。すべての関数は、合計並行値によって制限されています。CloudFlow は、CloudFlow がタスク状態を実行するときに、Function Compute を同期的に呼び出します。合計並行値は、関数呼び出しの並行値と他の呼び出しメソッドの並行値の合計です。同期 Function Compute 呼び出しの並行値の変更をリクエストできます。

  • FC.ResourceExhausted: リソース不足のため、関数が調整されています。このタイプのエラーが発生した場合は、お問い合わせください。

  • FC.InternalServerError: Function Compute でシステムエラーが発生しました。ワークフローを再実行してください。

説明

{エラーコード} は、Function Compute のエラーコードを示します。詳細については、「エラーコード」をご参照ください。

FC.Unknown

Function Compute は関数を呼び出しましたが、関数の実行中にエラーが発生し、キャッチされませんでした。エラーコードの例:UnhandledInvocationError

{CustomError}

呼び出し先によってスローされるカスタム例外エラー(関数の内部ビジネスエラーや CloudFlow など)。

FnF.TaskTimeout

ワークフローのステップの実行がタイムアウトしました。CloudFlow

FnF.Timeout

ワークフロー全体の実行がタイムアウトしました。CloudFlow

FnF.ALL

CloudFlow のすべてのエラーをシステムがキャッチします。

一般的なエラー処理の例

基本的な再試行

この例では、my-error-handle-example という名前のサービス統合呼び出し中にエラーが発生し、MyCustomException1 再試行ポリシーにヒットした場合、システムは再試行ポリシーに基づいて最大 3 回の再試行を試みます。3 回の再試行がすべて失敗した後、現在のエラーは MyCustomException1 キャッチポリシーにヒットします。システムは、OutputConstructor パラメーターを使用してカスタムエラー出力を構築し、カスタムエラー出力を ErrorCatchExit 状態への入力として使用します。次に、ワークフローは ErrorCatchExit 状態に遷移します。

Type: StateMachine
Name: ErrorHandleExample
SpecVersion: v1
Description: 基本的なエラー処理の例
StartAt: my-error-handle-example
States:
  - Type: Task
    Name: my-error-handle-example
    Action: FC:InvokeFunction
    TaskMode: RequestComplete
    Parameters:
      resourceArn: acs:fc:{regionId}:{accountId}:functions/myfunction/LATEST
      invocationType: Sync
      body: |  // 複数行の文字列
        xxx
    Retry: // 再試行ポリシー
      - Errors:
          - MyCustomException1
        Description: 再試行ポリシー 1
        MaxAttempts: 3
        IntervalSeconds: 2
    Catch: // キャッチポリシー
      - Errors:
          - MyCustomException1
        Description: キャッチポリシー 1
        OutputConstructor:
          ErrorCode: MyCustomException1
          ErrorMessage: MyCustomException1
        Next: ErrorCatchExit
    Next: SucceededExit
  - Type: Pass
    Name: ErrorCatchExit
    End: true
  - Type: Pass
    Name: SucceededExit
    End: true

YAML 設定ファイルを保存する前に、resourceArn の有効性を確認する必要があります。resourceArn:acs:fc:{regionId}:{accountId}:functions/myfunction/LATEST の resourceArn を実際の関数 ARN に置き換えてください。関数の ARN を取得する方法の詳細については、「関数の ARN を取得する」をご参照ください。

  • regionId: 関数が存在するリージョンの ID(cn-beijing、cn-hangzhou など)。

  • accountId: Alibaba Cloud アカウントの ID。

  • myfunction: 関数の名前。

  • LATEST: 関数のバージョン。ビジネス要件に基づいて、LATEST を特定のバージョンまたはエイリアスに置き換えることができます。

MyCustomException 1: ビジネス要件に基づいてエラーメッセージを変更できます。

バックオフ再試行

この例では、my-error-handle-example という名前のサービス統合呼び出し中にエラーが発生し、MyCustomException2 または MyCustomException3 再試行ポリシーにヒットした場合、システムは再試行ポリシーに基づいて最大 3 回の再試行を試みます。最初の再試行間隔は 5 秒です。システムは、バックオフ率 2.0 に基づいて、5 秒、10 秒、20 秒、40 秒の間隔で再試行を試みます。3 回の再試行がすべて失敗した後、現在のエラーは MyCustomException2 または MyCustomException3 キャッチポリシーにヒットします。システムは、OutputConstructor パラメーターを使用してカスタムエラー出力を構築し、カスタムエラー出力を ErrorCatchExit 状態への入力として使用します。次に、ワークフローは ErrorCatchExit 状態に遷移します。

Type: StateMachine
Name: ErrorHandleExample
SpecVersion: v1
Description: バックオフエラー処理の例
StartAt: my-error-handle-example
States:
  - Type: Task
    Name: my-error-handle-example
    Action: FC:InvokeFunction
    TaskMode: RequestComplete
    Parameters:
      resourceArn: acs:fc:{regionId}:{accountId}:functions/myfunction/LATEST
      body: xxx
    Retry: // 再試行ポリシー
      - Errors:
          - MyCustomException2
          - MyCustomException3
        Description: 再試行ポリシー 2
        MaxAttempts: 3
        IntervalSeconds: 5
        BackoffRate: 2.0
    Catch: // キャッチポリシー
      - Errors:
          - MyCustomException2
          - MyCustomException3
        Description: キャッチポリシー 2
        Next: ErrorCatchExit
    Next: SucceededExit
  - Type: Pass
    Name: ErrorCatchExit
    End: true
  - Type: Pass
    Name: SucceededExit
    End: true

複雑な再試行ポリシー

この例では、FnF.ALL エラータイプに再試行ポリシーとキャッチポリシーが指定されています。my-error-handle-example という名前のサービス統合呼び出し中に、MyCustomException1MyCustomException2MyCustomException3 以外のエラーが発生した場合、システムは再試行ポリシーに基づいて最大 3 回の再試行を試みます。最初の再試行間隔は 5 秒です。バックオフ率 2.0 に基づく最後のバックオフ間隔は 40 秒です。ただし、最大バックオフ間隔は 30 秒に設定されています。システムは、5 秒、10 秒、20 秒、30 秒の間隔で再試行を試みます。3 回の再試行がすべて失敗した後、現在のエラーは FnF.ALL キャッチポリシーにヒットします。OutputConstructor パラメーターを使用してカスタムエラー出力は構築されません。デフォルトでは、ワークフローは ErrorCatchExit 状態に遷移します。

Type: StateMachine
Name: ErrorHandleExample
SpecVersion: v1
Description: エラー処理の例
StartAt: my-error-handle-example
States:
  - Type: Task
    Name: my-error-handle-example
    Action: FC:InvokeFunction
    TaskMode: RequestComplete
    Parameters:
      resourceArn: acs:fc:{regionId}:{accountId}:functions/myfunction/LATEST
      body: xxx
    Retry: // 再試行ポリシー
      - Errors:
          - MyCustomException1
        Description: 再試行ポリシー 1
        MaxAttempts: 3
        IntervalSeconds: 2
      - Errors:
          - MyCustomException2
          - MyCustomException3
        Description: 再試行ポリシー 2
        MaxAttempts: 3
        IntervalSeconds: 5
        BackoffRate: 2.0
      - Errors:
          - FnF.ALL
        Description: 再試行ポリシー 2
        MaxAttempts: 3
        IntervalSeconds: 5
        BackoffRate: 2.0
        MaxBackoffSeconds: 30
    Catch: // キャッチポリシー
      - Errors:
          - MyCustomException1
        Description: キャッチポリシー 1
        OutputConstructor:
          ErrorCode: MyCustomException1
          ErrorMessage: MyCustomException1
        Next: ErrorCatchExit
      - Errors:
          - MyCustomException2
          - MyCustomException3
        Description: キャッチポリシー 2
        Next: ErrorCatchExit
      - Errors:
          - FnF.ALL
        Description: キャッチポリシー 3
        Next: ErrorCatchExit
    Next: SucceededExit
  - Type: Pass
    Name: ErrorCatchExit
    End: true
  - Type: Pass
    Name: SucceededExit
    End: true