Memanggil atau memanggil layanan Google Cloud seperti fungsi Cloud Run atau Cloud Run dari Alur Kerja 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 menetapkan 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 menambahkan informasi autentikasi secara eksplisit ke definisi alur kerja. Secara default, permintaan HTTP tidak berisi token identitas atau akses karena alasan keamanan.
Untuk mengetahui informasi selengkapnya, lihat Memberikan izin alur kerja untuk mengakses resource Google Cloud.
Kapan harus memanggil layanan
Bagaimana cara mengetahui kapan harus membuat langkah dalam YAML atau JSON menggunakan sintaksis Alur Kerja atau kapan harus membuat layanan—misalnya, layanan Cloud Run atau fungsi Cloud Run—untuk melakukan tugas tersebut?
Gunakan Alur Kerja untuk memanggil layanan dari alur kerja itu sendiri dan menangani hasilnya, serta untuk menjalankan tugas sederhana seperti melakukan panggilan HTTP. Alur kerja dapat memanggil layanan, mengurai respons, dan membuat input untuk layanan terhubung lainnya. Dengan memanggil layanan, Anda dapat menghindari komplikasi pemanggilan tambahan, dependensi tambahan, dan layanan yang memanggil layanan.
Buat layanan untuk melakukan pekerjaan apa pun yang terlalu rumit untuk Alur Kerja; misalnya, menerapkan logika bisnis yang dapat digunakan kembali, komputasi kompleks, atau transformasi yang tidak didukung oleh ekspresi Alur Kerja dan library standarnya. Kasus yang rumit biasanya lebih mudah diterapkan dalam kode, daripada menggunakan YAML atau JSON dan sintaksis Alur Kerja.
Memanggil layanan yang dibatasi untuk ingress internal
Alur kerja dapat memanggil fungsi Cloud Run atau layanan Cloud Run dalam project Google Cloud yang sama yang memiliki traffic masuk yang dibatasi untuk traffic internal. Dengan konfigurasi ini, layanan Anda tidak dapat dijangkau dari internet, tetapi dapat dijangkau dari Alur Kerja.
Untuk menerapkan batasan ini, Anda harus menyesuaikan setelan masuk layanan atau fungsi. Perhatikan bahwa layanan Cloud Run harus
dijangkau di URL run.app
-nya, bukan di domain kustom. Untuk informasi selengkapnya,
lihat Membatasi traffic masuk (untuk Cloud Run)
dan Mengonfigurasi setelan jaringan
(untuk fungsi Cloud Run). 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 benar untuk mengakses resource yang diminta. Untuk mempelajari akun layanan yang terkait 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 berikan aksesnya—Anda menjadikan identitas yang meminta sebagai akun utama resource—lalu menetapkan peran yang sesuai. Peran menentukan izin yang dimiliki identitas dalam konteks resource.
Misalnya, untuk mengonfigurasi fungsi Cloud Run 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 Invoker (roles/cloudfunctions.invoker
) fungsi Cloud Run kepada akun utama tersebut. Demikian pula, untuk menyiapkan akun layanan Cloud Run, Anda
memberikan peran Cloud Run Invoker (roles/run.invoker
)
untuk akun layanan tersebut. Untuk mempelajari lebih lanjut, lihat
informasi autentikasi untuk fungsi Cloud Run
atau ringkasan autentikasi Cloud Run.
Memanggil fungsi Cloud Run (generasi ke-2)
Di fungsi Cloud Run (generasi ke-2), izin pemanggilan tersedia dengan mengelola layanan Cloud Run yang mendasarinya. Jika alur kerja Anda memanggil
layanan fungsi Cloud Run (generasi ke-2), Anda tidak perlu memberikan
peran Cloud Run 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 fungsi Cloud Run.
Menambahkan informasi autentikasi ke alur kerja Anda
Saat membuat permintaan ke fungsi Cloud Run atau Cloud Run, gunakan OIDC untuk melakukan autentikasi.
Untuk membuat permintaan HTTP menggunakan OIDC, tambahkan bagian auth
ke bagian args
definisi alur kerja, setelah Anda menentukan URL. Dalam contoh ini, permintaan dikirim untuk memanggil fungsi Cloud Run:
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
. Atau, 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 menyalurkan permintaan HTTP. Untuk mengeksekusi tugas Cloud Run dari sebuah 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 contoh end-to-end 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), lihat artikel Eksekusi 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