Memanggil atau memanggil layanan Google Cloud seperti Cloud Functions atau Cloud Run dari Workflows dilakukan melalui permintaan HTTP. Metode permintaan HTTP yang paling umum memiliki pintasan panggilan (seperti
http.get
dan http.post), tetapi Anda dapat membuat
jenis permintaan HTTP apa pun dengan menyetel kolom call
ke http.request
dan
menentukan jenis permintaan menggunakan kolom method
. Untuk
mengetahui informasi selengkapnya, lihat Membuat permintaan HTTP.
Untuk mengirim permintaan yang diautentikasi:
Alur kerja Anda harus dikaitkan dengan akun layanan yang telah diberi satu atau beberapa peran Identity and Access Management (IAM) yang berisi izin yang diperlukan.
Anda harus secara eksplisit menambahkan informasi autentikasi ke definisi alur kerja. Secara default, permintaan HTTP tidak berisi token identitas atau akses untuk alasan keamanan.
Untuk mengetahui informasi selengkapnya, lihat bagian Memberikan izin alur kerja untuk mengakses resource Google Cloud.
Waktu untuk menelepon layanan
Bagaimana Anda tahu kapan harus membuat langkah dalam YAML atau JSON menggunakan sintaksis Workflows atau kapan harus membuat layanan—misalnya layanan Cloud Run atau Cloud Function—yang harus dilakukan?
Gunakan Workflows untuk memanggil layanan dari alur kerja itu sendiri dan menangani hasilnya, serta untuk menjalankan tugas sederhana seperti membuat panggilan HTTP. Alur kerja dapat memanggil layanan, mengurai respons, dan membuat input untuk layanan lain yang terhubung. Memanggil layanan memungkinkan Anda menghindari detail pemanggilan tambahan, dependensi tambahan, dan layanan yang memanggil layanan.
Buat layanan untuk melakukan tugas apa pun yang terlalu kompleks untuk Workflows; misalnya, menerapkan logika bisnis yang dapat digunakan kembali, komputasi kompleks, atau transformasi yang tidak didukung oleh ekspresi Workflows dan library standarnya. Kasus yang rumit biasanya lebih mudah diimplementasikan dalam kode, daripada menggunakan YAML atau JSON dan sintaksis Workflows.
Memanggil layanan yang dibatasi untuk ingress internal
Alur kerja dapat memanggil layanan Cloud Functions atau Cloud Run di project Google Cloud yang sama dengan traffic masuk yang dibatasi untuk traffic internal. Dengan konfigurasi ini, layanan Anda tidak dapat dijangkau dari internet, tetapi dapat dijangkau dari Workflows.
Untuk menerapkan batasan ini, Anda harus menyesuaikan setelan ingress layanan atau fungsi Anda. Perhatikan bahwa layanan Cloud Run harus dijangkau di URL run.app
, bukan di domain kustom. Untuk mengetahui informasi selengkapnya, lihat Membatasi ingress (untuk Cloud Run) dan Mengonfigurasi setelan jaringan (untuk Cloud Functions). Tidak ada perubahan lain yang diperlukan pada alur kerja Anda.
Menggunakan akun layanan dengan izin yang diperlukan
Saat membuat permintaan ke layanan Google Cloud lainnya, alur kerja Anda harus dikaitkan dengan akun layanan yang memiliki izin yang tepat untuk mengakses resource yang diminta. Untuk mempelajari akun layanan yang dikaitkan dengan alur kerja yang ada, lihat Memverifikasi akun layanan terkait alur kerja.
Saat menyiapkan akun layanan, Anda mengaitkan identitas yang meminta dengan resource yang ingin Anda beri akses—Anda menjadikan identitas permintaan sebagai utama resource—lalu menetapkan peran yang sesuai kepadanya. Peran menentukan izin yang dimiliki identitas dalam konteks resource.
Misalnya, untuk mengonfigurasi Cloud Function penerima agar menerima permintaan dari fungsi atau layanan panggilan tertentu, Anda harus menambahkan akun layanan pemanggil sebagai akun utama pada fungsi penerima dan memberikan peran Cloud Functions Invoker (roles/cloudfunctions.invoker
) ke akun utama tersebut. Demikian pula, untuk menyiapkan akun layanan untuk Cloud Run, Anda memberikan peran Cloud Run Invoker (roles/run.invoker
) ke akun layanan tersebut. Untuk mempelajari lebih lanjut, baca informasi autentikasi untuk Cloud Functions atau Ringkasan autentikasi Cloud Run.
Memanggil Cloud Functions (generasi ke-2)
Di Cloud Functions (generasi ke-2), izin pemanggilan tersedia dengan mengelola layanan Cloud Run yang mendasarinya. Jika alur kerja Anda memanggil layanan Cloud Function (generasi ke-2), Anda tidak perlu memberikan peran Cloud Functions Invoker (roles/cloudfunctions.invoker
) ke akun layanan pemanggil. Sebagai gantinya, Anda harus memberikan peran Cloud Run Invoker (roles/run.invoker
).
Untuk mengetahui informasi selengkapnya, lihat Perbandingan versi Cloud Functions.
Menambahkan informasi autentikasi ke alur kerja Anda
Saat membuat permintaan ke Cloud Functions atau Cloud Run, gunakan OIDC untuk melakukan autentikasi.
Untuk membuat permintaan HTTP menggunakan OIDC, tambahkan bagian auth
ke bagian args
pada definisi alur kerja, setelah Anda menentukan URL. Dalam contoh ini, permintaan dikirim untuk memanggil Cloud Function:
YAML
- step_A: call: http.get args: url: https://us-central1-project.cloudfunctions.net/functionA query: firstNumber: 4 secondNumber: 6 operation: sum auth: type: OIDC audience: OIDC_AUDIENCE
JSON
[ { "step_A": { "call": "http.get", "args": { "url": "https://us-central1-project.cloudfunctions.net/functionA", "query": { "firstNumber": 4, "secondNumber": 6, "operation": "sum" }, "auth": { "type": "OIDC", "audience": "OIDC_AUDIENCE" } } } } ]
audience
dapat digunakan untuk menentukan audiens OIDC untuk token.
Secara default, atribut ini ditetapkan ke nilai yang sama dengan url
. Namun, atribut ini harus ditetapkan ke URL root layanan Anda. Misalnya: https://region-project.cloudfunctions.net/hello_world
Menentukan jenis media untuk data respons
Jika header Content-Type
untuk respons menentukan jenis media application/json
, respons JSON yang disimpan dalam variabel akan otomatis dikonversi menjadi peta yang dapat diakses.
Jika perlu, ubah API yang dipanggil untuk menentukan
jenis media application/json
untuk header respons
Content-Type
. Jika tidak, Anda dapat menggunakan fungsi json.decode
dan text.encode
untuk mengonversi isi respons menjadi peta. Contoh:
json.decode(text.encode(RESPONSE_FROM_API))
Untuk mengetahui informasi selengkapnya, lihat Mengakses data respons HTTP yang disimpan dalam variabel.
Menjalankan tugas Cloud Run
Tidak seperti layanan Cloud Run, tugas Cloud Run tidak memproses atau melayani permintaan HTTP. Untuk menjalankan tugas Cloud Run dari alur kerja, gunakan konektor Cloud Run Admin API.
Untuk contoh end-to-end dari eksekusi job Cloud Run yang memproses data yang diteruskan sebagai variabel lingkungan ke tugas, lihat Eksekusi job Cloud Run menggunakan Workflows.
Untuk mengetahui contoh menyeluruh dari eksekusi tugas Cloud Run yang memproses data yang disimpan di bucket Cloud Storage yang memungkinkan Anda mengenkripsi data menggunakan kunci enkripsi yang dikelola pelanggan (CMEK), baca bagian Menjalankan tugas Cloud Run yang memproses data peristiwa di Cloud Storage.
Langkah selanjutnya
- Membuat endpoint HTTP untuk fungsi Anda
- Memicu layanan yang dihosting Cloud Run
- Tutorial Menggunakan Workflows dengan Cloud Run dan Cloud Functions