Memanggil layanan Google Cloud menggunakan konektor

Workflows memublikasikan konektor untuk mempermudah akses ke API Google Cloud lainnya dalam alur kerja, dan mengintegrasikan alur kerja Anda dengan produk Google Cloud tersebut. Misalnya, Anda dapat menggunakan konektor untuk memublikasikan pesan Pub/Sub, membaca atau menulis data ke database Firestore, atau mengambil kunci autentikasi dari Secret Manager. Untuk referensi mendetail tentang konektor yang tersedia, lihat Referensi konektor.

Konektor menyederhanakan layanan panggilan karena menangani pemformatan permintaan untuk Anda, menyediakan metode dan argumen sehingga Anda tidak perlu mengetahui detail Google Cloud API. Untuk mempelajari autentikasi dan perilaku lebih lanjut selama percobaan ulang dan operasi yang berjalan lama, lihat Memahami konektor.

Memanggil panggilan konektor

Mirip dengan memanggil endpoint HTTP, panggilan konektor memerlukan kolom call dan args. Anda dapat menentukan nilai waktu tunggu dan kebijakan polling menggunakan blok connector_params:

- STEP_NAME:
    call: CONNECTOR
    args:
        ARG: ARG_VALUE
        [...]
        body:
            KEY:KEY_VALUE
            [...]
        connector_params:
            timeout: TIMEOUT_IN_SECONDS
            polling_policy:
                initial_delay: INITIAL_DELAY_IN_SECONDS
                multiplier: MULTIPLIER_VALUE
                max_delay: MAX_DELAY_IN_SECONDS
            skip_polling: SKIP_POLLING_SWITCH 
            scopes:  OAUTH2_SCOPE 
    result: RESPONSE_VALUE

Ganti kode berikut:

  • STEP_NAME: nama langkah.
  • CONNECTOR (wajib): metode konektor dalam bentuk googleapis.gcp_service.version.resource.operation. Contohnya, googleapis.bigquery.v2.tables.get.
  • ARG dan ARG_VALUE (wajib): setiap panggilan konektor memerlukan argumen yang berbeda.
  • KEY dan KEY_VALUE (opsional): kolom untuk menyediakan input ke API.
  • Parameter khusus konektor (opsional):
    • TIMEOUT_IN_SECONDS: waktu dalam detik. Durasi menyeluruh saat panggilan konektor boleh dijalankan sebelum menampilkan pengecualian waktu tunggu. Nilai defaultnya adalah 1800 dan ini harus merupakan nilai maksimum untuk metode konektor yang bukan merupakan operasi yang berjalan lama. Jika tidak, untuk operasi yang berjalan lama, waktu tunggu maksimum untuk panggilan konektor adalah 31536000 detik (satu tahun).
    • INITIAL_DELAY_IN_SECONDS: parameter kebijakan polling dengan nilai default 1.0. Hanya berlaku untuk panggilan operasi yang berjalan lama.
    • MULTIPLIER_VALUE: parameter kebijakan polling dengan nilai default 1.25. Hanya berlaku untuk panggilan operasi yang berjalan lama.
    • MAX_DELAY_IN_SECONDS: parameter kebijakan polling dengan nilai default 60.0. Hanya berlaku untuk panggilan operasi yang berjalan lama.
    • SKIP_POLLING_SWITCH: jika ditetapkan ke True, panggilan pemanggilan konektor tidak akan memblokir jika permintaan awal untuk mengelola atau mengupdate resource berhasil (biasanya HTTP POST, HTTP UPDATE, atau HTTP DELETE). Jika permintaan awal tidak berhasil, percobaan ulang mungkin terjadi. Polling status (permintaan HTTP GET yang mengikuti permintaan awal) dilewati untuk operasi yang berjalan lama setelah permintaan awal selesai. Nilai defaultnya adalah False.
    • OAUTH2_SCOPE: Cakupan OAuth2 untuk diteruskan ke Google API. Dapat berupa string, daftar string, string yang dipisahkan spasi, atau string yang dipisahkan koma.
  • RESPONSE_VALUE (opsional): nama variabel tempat hasil langkah pemanggilan panggilan konektor disimpan.

Contoh

Alur kerja berikut menunjukkan penggunaan konektor Cloud Storage API dan konektor Cloud Translation API untuk menerjemahkan dua file ke bahasa Prancis dan Spanyol, sehingga menyimpan hasilnya di bucket Cloud Storage.

main:
  steps:
  - init:
      assign:
      - projectId: ${sys.get_env("GOOGLE_CLOUD_PROJECT_ID")}
      - location: ${sys.get_env("GOOGLE_CLOUD_LOCATION")}
      - inputBucketName: ${projectId + "-input-files"}
      - outputBucketName: ${projectId + "-output-files-" + string(int(sys.now()))}
  - createOutputBucket:
        call: googleapis.storage.v1.buckets.insert
        args:
          project: ${projectId}
          body:
            name: ${outputBucketName}
  - batchTranslateText:
      call: googleapis.translate.v3beta1.projects.locations.batchTranslateText
      args:
          parent: ${"projects/" + projectId + "/locations/" + location}
          body:
              inputConfigs:
                gcsSource:
                  inputUri: ${"gs://" + inputBucketName + "/*"}
              outputConfig:
                  gcsDestination:
                    outputUriPrefix: ${"gs://" + outputBucketName + "/"}
              sourceLanguageCode: "en"
              targetLanguageCodes: ["es", "fr"]
      result: batchTranslateTextResult

Langkah selanjutnya