Anda dapat menggunakan node Function Compute di DataWorks untuk menjalankan kode kustom. Node ini mendukung penjadwalan periodik, sehingga ideal untuk tugas terjadwal. Anda juga dapat menggabungkan node Function Compute dengan jenis node lain di DataWorks guna membangun alur kerja pemrosesan data yang lengkap. Topik ini menjelaskan cara membuat dan menggunakan node Function Compute.
Prasyarat
-
Pengguna RAM yang ingin Anda gunakan telah ditambahkan ke ruang kerja Anda.
Jika Anda ingin menggunakan Pengguna RAM untuk mengembangkan tugas, tambahkan Pengguna RAM tersebut ke ruang kerja sebagai anggota dan berikan peran Develop atau Workspace Administrator. Peran Workspace Administrator memiliki izin lebih luas daripada yang diperlukan, sehingga berikan dengan hati-hati. Untuk informasi selengkapnya tentang cara menambahkan anggota dan memberikan peran, lihat Tambahkan anggota ke ruang kerja.
-
Kelompok sumber daya arsitektur tanpa server telah dikaitkan dengan ruang kerja Anda. Untuk informasi selengkapnya, lihat topik dalam direktori Gunakan kelompok sumber daya arsitektur tanpa server.
-
Node Function Compute harus dibuat terlebih dahulu. Untuk informasi selengkapnya, lihat Buat node untuk alur kerja penjadwalan.
Batasan
-
DataWorks hanya mendukung pemanggilan event functions. Anda tidak dapat memanggil http functions. Oleh karena itu, untuk menjadwalkan fungsi secara periodik di DataWorks, Anda harus membuat event function guna memproses permintaan event. Untuk informasi selengkapnya tentang jenis fungsi, lihat Pilih jenis fungsi.
-
Anda hanya dapat menggunakan node Function Compute di ruang kerja yang berada di wilayah berikut: Tiongkok (Hangzhou), Tiongkok (Shanghai), Tiongkok (Beijing), Tiongkok (Zhangjiakou), Tiongkok (Shenzhen), Tiongkok (Hong Kong), Singapura, Inggris (London), AS (Silicon Valley), AS (Virginia), Jerman (Frankfurt), dan Australia (Sydney).
Catatan penggunaan
-
Saat menggunakan node Function Compute, Anda memanggil event function dari layanan yang sudah ada. Jika daftar layanan tidak tersedia, periksa kemungkinan penyebab berikut:
-
Akun Anda memiliki Pembayaran tertunda. Isi ulang akun Anda, refresh halaman konfigurasi node, lalu coba lagi.
-
Pengguna saat ini tidak memiliki izin untuk mengambil daftar layanan. Hubungi Pemilik Akun Alibaba Cloud agar memberikan izin fc:ListServices kepada Pengguna RAM Anda atau menyambungkan kebijakan sistem AliyunFCFullAccess. Setelah izin diberikan, refresh halaman konfigurasi node dan coba lagi. Untuk informasi selengkapnya tentang otorisasi, lihat Kontrol akses produk dan konsol menggunakan kebijakan RAM.
-
-
Jika fungsi dalam node Function Compute DataWorks diperkirakan berjalan lebih dari satu jam, Anda harus menggunakan pemanggilan asinkron. Untuk informasi selengkapnya tentang pemanggilan asinkron di Function Compute, lihat Ikhtisar fitur.
-
Jika Anda menggunakan Pengguna RAM untuk mengembangkan node Function Compute, Anda harus memberikan izin yang diperlukan kepada Pengguna RAM tersebut melalui kebijakan sistem atau kebijakan kustom.
Jenis kebijakan
Deskripsi
Kebijakan sistem
Saat menggunakan kebijakan sistem, berikan kebijakan
AliyunFCFullAccess,AliyunFCReadOnlyAccess, danAliyunFCInvocationAccesskepada pengguna.Kebijakan kustom
Saat menggunakan kebijakan kustom untuk Function Compute, berikan izin umum berikut:
-
fc:GetAsyncTask -
fc:StopAsyncTask -
fc:GetService -
fc:ListServices -
fc:GetFunction -
fc:InvokeFunction -
fc:ListFunctions -
fc:GetFunctionAsyncInvokeConfig -
fc:ListServiceVersions -
fc:ListAliases -
fc:GetAlias -
fc:ListFunctionAsyncInvokeConfigs -
fc:GetStatefulAsyncInvocation -
fc:StopStatefulAsyncInvocation
CatatanUntuk informasi selengkapnya tentang kebijakan izin Function Compute, lihat dokumen berikut:
-
Pengembangan node
-
Setelah membuat node Function Compute, buka node tersebut. Di tab konfigurasi node, pilih fungsi yang akan dipanggil dan konfigurasikan metode pemanggilan serta variabelnya.
Parameter
Deskripsi
Select Version or Alias
Pilih versi layanan atau alias yang akan digunakan untuk pemanggilan fungsi. Versi default adalah LATEST.
-
Versi layanan
Kontrol versi tingkat layanan Function Compute memungkinkan Anda menerbitkan satu atau beberapa versi layanan Anda. Saat menerbitkan versi, Function Compute membuat Snapshot layanan, yang mencakup konfigurasi layanan serta kode dan konfigurasi fungsi di dalam layanan, tetapi tidak termasuk pemicu. Sistem kemudian secara otomatis menetapkan nomor versi pada Snapshot tersebut untuk penggunaan di masa depan. Untuk informasi selengkapnya tentang penerbitan versi, lihat Kelola versi.
-
Alias versi
Di Function Compute, Anda dapat membuat alias untuk versi layanan. Alias mengarah ke versi tertentu. Anda dapat menggunakan alias untuk mengimplementasikan fitur seperti penerapan, rollback, dan rilis canary. Alias harus dikaitkan dengan layanan dan versi tertentu. Saat menggunakan alias untuk mengakses layanan atau fungsi, Function Compute akan menyelesaikan alias tersebut ke versi yang dituju. Pemanggil tidak perlu mengetahui versi spesifiknya. Untuk informasi selengkapnya tentang pembuatan alias, lihat Kelola alias.
Select Function
Pilih fungsi yang akan dipanggil. Jika tidak ada fungsi yang tersedia, Anda harus membuatnya terlebih dahulu. Untuk informasi selengkapnya, lihat Kelola fungsi.
CatatanDataWorks hanya mendukung pemanggilan event functions. Anda tidak dapat memanggil http functions. Oleh karena itu, untuk menjadwalkan fungsi secara periodik di DataWorks, Anda harus membuat event function untuk memproses permintaan event. Untuk informasi selengkapnya tentang jenis fungsi, lihat Pilih jenis fungsi.
Contoh ini menggunakan fungsi
para_service_01_by_time_triggers. Saat membuat fungsi ini, pilih kode contoh untuk triggering a function at a scheduled time. Logika kodenya adalah sebagai berikut:import json import logging logger = logging.getLogger() def handler(event, context): logger.info('event: %s', event) # Parse the json evt = json.loads(event) triggerName = evt["triggerName"] triggerTime = evt["triggerTime"] payload = evt["payload"] logger.info('triggerName: %s', triggerName) logger.info("triggerTime: %s", triggerTime) logger.info("payload: %s", payload) return 'Timer Payload: ' + payloadUntuk kode contoh fungsi lainnya, lihat Kode contoh.
Invocation Method
Anda dapat memanggil fungsi dengan salah satu cara berikut:
-
synchronous invocation: Event langsung memicu fungsi. Function Compute menjalankan fungsi dan menunggu respons. Setelah fungsi dipanggil, Function Compute mengembalikan hasil eksekusi.
-
asynchronous invocation: Function Compute menyimpan permintaan event secara persisten dan segera mengembalikan respons tanpa menunggu permintaan selesai.
-
Anda dapat menggunakan pemanggilan asinkron untuk fungsi yang memiliki logika berjalan lama, intensif sumber daya, atau rentan error. Hal ini meningkatkan responsivitas aplikasi dan ketahanannya terhadap lonjakan traffic.
-
Gunakan pemanggilan asinkron untuk tugas Function Compute yang diperkirakan berjalan lebih dari satu jam.
-
Variable
Tetapkan nilai untuk variabel dalam kode fungsi Anda. Konfigurasi ini sesuai dengan konten di panel , yang dapat Anda akses dengan menavigasi ke Test Function>Configure Test Parameters di halaman detail fungsi di Konsol Function Compute.
Contoh ini meneruskan parameter berikut ke fungsi
para_service_01_by_time_triggers. Sintaksis${}mendefinisikan variabel bernamabizdateyang memerlukan penetapan nilai.{ "payload": "payload1", "triggerTime": "${bizdate}", "triggerName": "triggerName1" } -
-
Setelah selesai mengembangkan node Function Compute, konfigurasikan properti penjadwalannya untuk mengaktifkan eksekusi periodik. Untuk informasi selengkapnya, lihat Konfigurasikan properti penjadwalan untuk node.
Penerapan dan manajemen
-
Setelah mengonfigurasi properti penjadwalan, Anda dapat menerapkan node Function Compute ke lingkungan produksi. Untuk informasi selengkapnya, lihat Terapkan node atau alur kerja.
-
Setelah node diterapkan, node tersebut berjalan secara periodik sesuai konfigurasi penjadwalan Anda. Anda dapat melihat node yang telah diterapkan dan melakukan operasi O&M di . Untuk informasi selengkapnya, lihat Memulai Operation Center.