Memanggil fungsi Cloud Run atau Cloud Run

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"
            }
          }
        }
      }
    ]
      
Parameter 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