全部产品
Search
文档中心

CloudFlow:Penanganan kesalahan

更新时间:Jul 02, 2025

Topik ini memberikan gambaran umum dan contoh-contoh penanganan kesalahan. Anda dapat menggunakan kebijakan ulang dan tangkap untuk menangani kesalahan umum serta meningkatkan stabilitas alur kerja.

Gambaran Umum

Kesalahan yang diharapkan atau tidak terduga mungkin terjadi selama integrasi alur kerja CloudFlow. Dalam situasi ini, Anda dapat melanjutkan operasi pada status saat ini atau beralih ke status berikutnya. Kata kunci FnF.ALL adalah opsi khusus yang menangkap semua jenis kesalahan. Untuk informasi lebih lanjut tentang penggunaan kebijakan ulang dan tangkap, lihat bagian Ulang dan Tangkap.

Status yang mendukung penanganan kesalahan

Anda dapat menggunakan bidang Ulang dan Tangkap dalam definisi status berikut untuk menentukan kebijakan ulang dan tangkap serta menangani kesalahan dalam status tersebut.

Catatan

CloudFlow selalu mengeksekusi kebijakan ulang terlebih dahulu saat menangani kesalahan. Jika kebijakan ulang gagal, CloudFlow akan mengeksekusi kebijakan tangkap.

Ulang

Parameter

Tipe

Diperlukan

Deskripsi

Contoh

Kesalahan

[]string

Ya

Kesalahan yang dapat terjadi. Untuk informasi lebih lanjut, lihat Jenis kesalahan umum.

-MyCustomError

-FnF.ALL

Deskripsi

string

Ya

Nama dan deskripsi kebijakan ulang.

Kebijakan ulang #1

MaxAttempts

int

Ya

Jumlah maksimum percobaan ulang.

3

IntervalSeconds

int

Ya

Interval percobaan ulang. Nilai maksimum: 86400. Satuan: detik.

10

BackoffRate

float

Tidak

Pengali dengan mana interval ulang yang ditentukan oleh parameter IntervalSeconds meningkat setelah setiap percobaan ulang.

2

MaxBackoffSeconds

int

Tidak

Interval ulang maksimum selama alur kerja berjalan. Nilai maksimum: 86400. Satuan: detik.

30

Catatan

Jika Anda mendefinisikan beberapa aturan ulang untuk jenis kesalahan yang sama, CloudFlow hanya mencoba ulang berdasarkan aturan ulang pertama yang cocok.

Tangkap

Parameter

Tipe

Diperlukan

Deskripsi

Contoh

Kesalahan

[]string

Ya

Kesalahan yang dapat terjadi. Untuk informasi lebih lanjut, lihat Jenis kesalahan umum.

-MyCustomError

-FnF.ALL

Deskripsi

string

Ya

Nama dan deskripsi kebijakan tangkap.

Aturan tangkap kesalahan #1

OutputConstructor

map[string]any

Tidak

Konstruktor keluaran. Parameter ini digunakan bersama dengan parameter Next.

Lihat OutputConstructor.

Next

string

Ya

Status ke mana alur kerja kembali ketika kesalahan tertentu ditangkap.

my-next-state

Parameter OutputConstructor digunakan bersama dengan parameter Next. Jika terjadi kesalahan dalam suatu status, tidak ada keluaran yang dihasilkan dalam status tersebut. Alur kerja tidak dapat dilanjutkan meskipun beralih ke status berikutnya. Dalam hal ini, Anda dapat menggunakan parameter OutputConstructor untuk membangun keluaran dan menggunakannya sebagai masukan untuk status berikutnya.

Catatan

Jika Anda mendefinisikan beberapa aturan tangkap untuk jenis kesalahan yang sama, CloudFlow hanya melakukan tangkapan berdasarkan aturan tangkap pertama yang cocok.

Jenis kesalahan umum

Jenis kesalahan umum berikut terjadi ketika CloudFlow diintegrasikan dengan Function Compute. Untuk informasi tentang jenis kesalahan yang terjadi ketika CloudFlow diintegrasikan dengan layanan cloud lainnya, lihat dokumentasi integrasi layanan yang sesuai.

Jenis kesalahan

Deskripsi

FC.{ErrorCode}

Function Compute mengembalikan kode status HTTP selain 200. Jenis kesalahan umum:

  • FC.ResourceThrottled: Fungsi Anda dibatasi karena konkurensi tinggi. Semua fungsi Anda dibatasi oleh nilai konkurensi total. CloudFlow memanggil Function Compute secara sinkron ketika CloudFlow mengeksekusi status Tugas. Nilai konkurensi total adalah jumlah dari nilai konkurensi dalam pemanggilan fungsi dan nilai konkurensi metode pemanggilan lainnya. Anda dapat meminta untuk memodifikasi nilai konkurensi pemanggilan Function Compute secara sinkron.

  • FC.ResourceExhausted: Fungsi Anda dibatasi karena sumber daya tidak mencukupi. Hubungi kami ketika kesalahan jenis ini terjadi.

  • FC.InternalServerError: Terjadi kesalahan sistem pada Function Compute. Jalankan ulang alur kerja.

Catatan

{Kode kesalahan} menunjukkan kode kesalahan Function Compute. Untuk informasi lebih lanjut, lihat Kode kesalahan.

FC.Unknown

Function Compute memanggil fungsi tersebut, tetapi terjadi kesalahan selama eksekusi fungsi dan tidak tertangkap. Contoh kode kesalahan: UnhandledInvocationError.

{CustomError}

Kesalahan pengecualian kustom yang dilemparkan oleh penelepon, seperti kesalahan bisnis internal fungsi dan CloudFlow.

FnF.TaskTimeout

Eksekusi langkah dalam alur kerja habis waktu.CloudFlow

FnF.Timeout

Eksekusi keseluruhan alur kerja habis waktu.CloudFlow

FnF.ALL

Sistem menangkap semua kesalahan dari CloudFlow

Contoh penanganan kesalahan umum

Ulang dasar

Dalam contoh ini, jika terjadi kesalahan yang memenuhi kebijakan ulang MyCustomException1 selama pemanggilan integrasi layanan bernama my-error-handle-example, sistem akan mencoba hingga tiga kali ulang berdasarkan kebijakan ulang. Setelah tiga percobaan ulang habis, kesalahan saat ini memenuhi kebijakan tangkap MyCustomException1. Sistem membangun keluaran kesalahan kustom menggunakan parameter OutputConstructor dan menggunakan keluaran tersebut sebagai masukan untuk status ErrorCatchExit. Kemudian, alur kerja beralih ke status ErrorCatchExit.

Type: StateMachine
Name: ErrorHandleExample
SpecVersion: v1
Description: an example of basic error handling
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: retry policy 1
        MaxAttempts: 3
        IntervalSeconds: 2
    Catch:
      - Errors:
          - MyCustomException1
        Description: catch policy 1
        OutputConstructor:
          ErrorCode: MyCustomException1
          ErrorMessage: MyCustomException1
        Next: ErrorCatchExit
    Next: SucceededExit
  - Type: Pass
    Name: ErrorCatchExit
    End: true
  - Type: Pass
    Name: SucceededExit
    End: true

Sebelum menyimpan file konfigurasi YAML, Anda harus memverifikasi validitas resourceArn. Ganti resourceArn dalam resourceArn:acs:fc:{regionId}:{accountId}:functions/myfunction/LATEST dengan ARN fungsi aktual Anda. Untuk informasi lebih lanjut tentang cara memperoleh ARN fungsi, lihat Memperoleh ARN Fungsi.

  • regionId: ID wilayah tempat fungsi Anda berada, seperti cn-beijing atau cn-hangzhou.

  • accountId: ID akun Alibaba Cloud Anda.

  • myfunction: nama fungsi Anda.

  • LATEST: versi fungsi. Anda dapat mengganti LATEST dengan versi atau alias tertentu sesuai kebutuhan bisnis Anda.

MyCustomException1: Anda dapat memodifikasi pesan kesalahan sesuai kebutuhan bisnis Anda.

Ulang mundur

Dalam contoh ini, jika terjadi kesalahan yang memenuhi kebijakan ulang MyCustomException2 atau MyCustomException3 selama pemanggilan integrasi layanan bernama my-error-handle-example, sistem akan mencoba hingga tiga kali ulang berdasarkan kebijakan ulang. Interval ulang awal adalah 5 detik. Sistem mencoba ulang pada interval 5, 10, 20, dan 40 detik berdasarkan laju mundur 2.0. Setelah tiga percobaan ulang habis, kesalahan saat ini memenuhi kebijakan tangkap MyCustomException2 atau MyCustomException3. Sistem membangun keluaran kesalahan kustom menggunakan parameter OutputConstructor dan menggunakan keluaran tersebut sebagai masukan untuk status ErrorCatchExit. Kemudian, alur kerja beralih ke status ErrorCatchExit.

Type: StateMachine
Name: ErrorHandleExample
SpecVersion: v1
Description: an example of backoff error handling
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: retry policy 2
        MaxAttempts: 3
        IntervalSeconds: 5
        BackoffRate: 2.0
    Catch:
      - Errors:
          - MyCustomException2
          - MyCustomException3
        Description: catch policy 2
        Next: ErrorCatchExit
    Next: SucceededExit
  - Type: Pass
    Name: ErrorCatchExit
    End: true
  - Type: Pass
    Name: SucceededExit
    End: true

Kebijakan ulang kompleks

Dalam contoh ini, kebijakan ulang dan kebijakan tangkap ditentukan untuk jenis kesalahan FnF.ALL. Jika terjadi kesalahan selain MyCustomException1, MyCustomException2, dan MyCustomException3 selama pemanggilan integrasi layanan bernama my-error-handle-example, sistem akan mencoba hingga tiga kali ulang berdasarkan kebijakan ulang. Interval ulang awal adalah 5 detik. Interval mundur terakhir berdasarkan laju mundur 2.0 adalah 40 detik. Namun, interval mundur maksimum diatur menjadi 30 detik. Sistem mencoba ulang pada interval 5, 10, 20, dan 30 detik. Setelah tiga percobaan ulang habis, kesalahan saat ini memenuhi kebijakan tangkap FnF.ALL. Tidak ada keluaran kesalahan kustom yang dibangun menggunakan parameter OutputConstructor. Secara default, alur kerja beralih ke status ErrorCatchExit.

Type: StateMachine
Name: ErrorHandleExample
SpecVersion: v1
Description: an example of error handling
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: retry policy 1
        MaxAttempts: 3
        IntervalSeconds: 2
      - Errors:
          - MyCustomException2
          - MyCustomException3
        Description: retry policy 2
        MaxAttempts: 3
        IntervalSeconds: 5
        BackoffRate: 2.0
      - Errors:
          - FnF.ALL
        Description: retry policy 2
        MaxAttempts: 3
        IntervalSeconds: 5
        BackoffRate: 2.0
        MaxBackoffSeconds: 30
    Catch:
      - Errors:
          - MyCustomException1
        Description: catch policy 1
        OutputConstructor:
         ErrorCode: MyCustomException1
          ErrorMessage: MyCustomException1
        Next: ErrorCatchExit
      - Errors:
          - MyCustomException2
          - MyCustomException3
        Description: catch policy 2
        Next: ErrorCatchExit
      - Errors:
          - FnF.ALL
        Description: catch policy 3
        Next: ErrorCatchExit
    Next: SucceededExit
  - Type: Pass
    Name: ErrorCatchExit
    End: true
  - Type: Pass
    Name: SucceededExit
    End: true