全部产品
Search
文档中心

CloudFlow:Integrasi CloudFlow dengan Function Compute

更新时间:Jul 06, 2025

Anda dapat menggunakan Bahasa Definisi Alur (FDL) untuk mengintegrasikan CloudFlow dengan layanan Alibaba Cloud lainnya dan memanggil layanan tersebut di dalam CloudFlow. Topik ini menjelaskan cara CloudFlow diintegrasikan dengan Function Compute dan memanggil fungsi-fungsinya.

Informasi latar belakang

CloudFlow menggambarkan alur bisnis berdasarkan status alur dan model mesin keadaan, serta menggunakan parameter pemanggilan API yang Anda tentukan untuk menyelesaikan setiap langkah dari alur tersebut.

Untuk menambahkan fungsi ke CloudFlow dan memanggil fungsi-fungsi CloudFlow, Anda harus mengikuti spesifikasi orkestrasi. Bagian berikut memberikan contoh prosedur tentang cara menambahkan fungsi ke CloudFlow dan kemudian memanggil fungsi tersebut.

Langkah 1: Pilih tipe status

Tambahkan status Tugas ke alur, lalu orkestrasikan Function Compute berdasarkan definisi Tugas.

Type: StateMachine
Name: MyWorkflow
SpecVersion: v1
StartAt: contoh pemanggilan fungsi
States:
  - Name: contoh pemanggilan fungsi
    Type: Task
    TaskMode: RequestComplete
    Action: FC:InvokeFunction
    Parameters:
      resourceArn: xxx
      invocationType: xxx
      body: xxx
    End: true

Langkah 2: Konfigurasikan parameter pemanggilan

Pemanggilan fungsi Function Compute melibatkan parameter utama berikut: Nama Sumber Daya Alibaba Cloud (ARN) yang mengidentifikasi fungsi, mode pemanggilan fungsi, dan parameter acara. Tabel berikut menjelaskan parameter-parameter tersebut.

Catatan

Menurut spesifikasi Spec, parameter mengikuti konvensi penamaan camel case dan dimulai dengan huruf kecil.

Parameter

Diperlukan

Tipe data parameter

Deskripsi

resourceArn

Ya

String.

ARN dari fungsi, yang digunakan untuk mengidentifikasi fungsi tersebut.

invocationType

Ya

Sync atau Async.

Mode pemanggilan fungsi.

body

Tidak

Objek JSON atau string, yang diserialisasi menjadi larik byte sebelum diteruskan ke fungsi yang dipanggil.

Parameter acara, yang merupakan parameter input dari proses eksekusi fungsi.

Kode contoh:

Type: StateMachine
Name: MyWorkflow
SpecVersion: v1
StartAt: contoh pemanggilan fungsi sinkron
States:
  - Name: contoh pemanggilan fungsi sinkron
    Type: Task
    Action: FC:InvokeFunction
    TaskMode: RequestComplete
    Parameters:
      resourceArn: acs:fc:::services/myService1.LATEST/functions/myFunction1
      invocationType: Sync
      body:
        testKey: isi parameter testKey dalam acara fungsi
    Next: contoh pemanggilan fungsi asinkron
  - Name: contoh pemanggilan fungsi asinkron
    Type: Task
    Action: FC:InvokeFunction
    TaskMode: RequestComplete
    Parameters:
      resourceArn: acs:fc:::services/myService2.LATEST/functions/myFunction2
      invocationType: Async
      body:
        key1: value1
        key2: value2
    End: true

Langkah 3: Atur mode integrasi

Status Tugas mendukung atribut TaskMode, yang mendefinisikan bagaimana status saat ini menangani pemanggilan API. Integrasi CloudFlow dan Function Compute mendukung mode integrasi berikut:

  • RequestComplete

    Dalam mode ini, setelah sistem merespons permintaan dan mengembalikan hasilnya, alur maju ke status berikutnya. Mode ini efektif untuk pemanggilan fungsi sinkron, pemanggilan fungsi asinkron, dan pemanggilan tugas asinkron.

  • WaitForSystemCallback

    Dalam mode ini, setelah sistem mengirim permintaan pemanggilan fungsi, sistem fungsi mengirim notifikasi panggilan balik sistem. Setelah alur kerja menerima notifikasi panggilan balik sistem, alur kerja mengeksekusi langkah berikutnya. Mode ini hanya efektif untuk pemanggilan fungsi asinkron dan pemanggilan tugas asinkron.

  • WaitForCustomCallback

    Setelah permintaan pemanggilan fungsi selesai, alur kerja akan terus menunggu hingga program pengguna memberi tahu API untuk mengirim notifikasi menggunakan panggilan balik yang disediakan oleh CloudFlow. Alur kerja baru akan maju setelah CloudFlow menerima notifikasi panggilan balik. Mode ini hanya berlaku untuk pemanggilan fungsi asinkron dan pemanggilan tugas asinkron.

Untuk informasi lebih lanjut tentang pemanggilan fungsi, lihat Pemanggilan Sinkron, Pemanggilan Asinkron, dan Manajemen Tugas Asinkron.

Type: StateMachine
Name: MyWorkflow
SpecVersion: v1
StartAt: contoh pemanggilan fungsi sinkron
States:
  - Name: contoh pemanggilan fungsi sinkron
    Type: Task
    Action: FC:InvokeFunction
    TaskMode: RequestComplete
    Parameters:
      resourceArn: acs:fc:::services/myService1.LATEST/functions/myFunction1
      invocationType: Sync
      body:
        testKey: isi parameter testKey dalam acara fungsi
    Next: contoh pemanggilan fungsi asinkron
  - Name: contoh pemanggilan fungsi asinkron
    Type: Task
    Action: FC:InvokeFunction
    TaskMode: RequestComplete
    Parameters:
      resourceArn: acs:fc:::services/myService2.LATEST/functions/myFunction2
      invocationType: Async
      body:
        key1: value1
        key2: value2
    End: true

Anda harus menambahkan bidang kustom callbackToken ke parameter body dan mereferensikan ekspresi $Context.Current.TaskToken di bidang kustom callbackToken. Ekspresi ini menentukan atribut token yang harus digunakan ketika alur kerja memanggil kembali hasil eksekusi tugas.

Langkah 4: Bangun parameter pemanggilan

Dalam orkestrasi alur sebenarnya, Anda harus membangun parameter yang diperlukan oleh pemanggilan fungsi saat ini berdasarkan konteks alur kerja dan hasil dari status sebelumnya. Kode berikut memberikan contoh tentang cara membangun parameter pemanggilan.

  • Anda dapat menggunakan konstanta $Context dan $Input yang dicadangkan oleh spesifikasi Spec untuk mengakses data dalam alur.

Type: StateMachine
Name: MyWorkflow
SpecVersion: v1
StartAt: contoh pemanggilan fungsi
States:
  - Name: contoh pemanggilan fungsi
    Type: Task
    TaskMode: RequestComplete
    Action: FC:InvokeFunction
    Parameters:
      resourceArn: acs:fc:::services/myService1.LATEST/functions/myFunction1
      invocationType: Sync
      body:
        argument1.$: $Input.input.BucketName
        argument2.$: $Input.input.TaskId
    End: true

Langkah 5: Tangani hasil pemanggilan

Anda memanggil status untuk menyelesaikan seluruh alur. Dalam skenario pemanggilan fungsi, alur kerja mengembalikan hasil eksekusi setelah alur kerja menyelesaikan pemanggilan. Anda dapat menggunakan hasil yang dikembalikan sebagai pernyataan bersyarat dari alur atau sebagai input dari status berikutnya. Menurut definisi API InvokeFunction dari Function Compute, jika nilai parameter respons Type dari fungsi adalah Byte, tipe data aktualnya adalah Byte. Nilai kembali fungsi bisa berupa string, objek JSON, array JSON, atau tipe data dasar.

  • Dalam mode integrasi RequestComplete, setelah alur kerja menerima hasil yang dikembalikan, alur kerja membungkus hasil tersebut ke dalam objek JSON. Kode berikut menunjukkan struktur pembungkusan hasil dalam alur kerja.

    {
        "Body": "hasil pemanggilan fungsi"
    }

    Anda dapat menggunakan JSONPath dari $Output.Body dalam deskripsi alur kerja untuk mengakses hasil yang dikembalikan dari fungsi. Jika nilai kembali adalah objek JSON, Anda dapat memanggil fungsi bawaan dalam alur kerja untuk mendeserialisasi nilai kembali. Kemudian, Anda dapat mengakses anggota dalam nilai kembali berdasarkan operasi objek JSON.

    Type: StateMachine
    Name: MyWorkflow
    SpecVersion: v1
    Description: ' '
    StartAt: Contoh 1 pemanggilan fungsi
    States:
      - Name: Contoh 1 pemanggilan fungsi
        Type: Task
        TaskMode: RequestComplete
        Action: FC:InvokeFunction
        Parameters:
          resourceArn: acs:fc:::services/myService1.LATEST/functions/myFunction1
          invocationType: Sync
          body:
            argument1.$: $Input.Records
            argument2.$: $Input.BucketName
        Next: pernyataan bersyarat
      - Type: Choice
        Name: pernyataan bersyarat
        Branches:
          - Condition: $Input.ObjectSize >= $Input.Threshold
            Next: Contoh 2 pemanggilan fungsi
        Default: Tidak ada tindakan yang dilakukan.
      - Type: Pass
        Name: Tidak ada tindakan yang dilakukan.
        End: true
      - Name: Contoh 2 pemanggilan fungsi
        Type: Task
        TaskMode: RequestComplete
        Action: FC:InvokeFunction
        Parameters:
          resourceArn: acs:fc:::services/myService2.LATEST/functions/myFunction2
          invocationType: Sync
          body:
            argument1.$: $Input.BucketName
            argument2.$: $Input.TaskId
        End: true
    
  • Dalam mode integrasi WaitForSystemCallback dan WaitForCustomCallback, sistem eksternal memanggil operasi API ReportTaskSucceeded atau ReportTaskFailed untuk menanyakan hasil pemanggilan fungsi dan meneruskan hasil tersebut ke alur kerja. Alur kerja tidak membungkus hasil yang dikembalikan. Sebagai contoh, jika nilai kembali fungsi adalah {"message": "hello"}, struktur nilai kembali dalam alur kerja ditampilkan seperti kode berikut.

    {
        "message": "hello"
    }

    Anda dapat menggunakan ekspresi $Output dalam deskripsi alur kerja Anda untuk mengakses hasil yang dikembalikan dari fungsi.

Definisi kesalahan umum

  • FC.ResourceThrottled: Fungsi Anda dibatasi karena konkurensi tinggi. Total jumlah pemanggilan fungsi Anda tidak boleh lebih besar dari nilai konkurensi tertentu. CloudFlow secara sinkron memanggil Function Compute ketika CloudFlow mengeksekusi status Tugas. Nilai konkurensi mencakup pemanggilan fungsi di CloudFlow dan pemanggilan fungsi dalam mode lainnya. Anda dapat meminta untuk memodifikasi nilai konkurensi jika nilai konkurensi tidak dapat memenuhi kebutuhan Anda.

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

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

  • FC.AccessDenied: Permintaan akses Anda ditolak karena akun Alibaba Cloud Anda tidak memiliki izin yang diperlukan.

  • FC.InvalidArgument: Parameter tidak valid.

  • FC.EntityTooLarge: Nilai parameter input yang ditentukan melebihi rentang nilai yang valid.

Untuk informasi tentang kesalahan lainnya di Function Compute, lihat Kode Kesalahan.