Memanggil layanan Google Cloud menggunakan konektor

Workflows memublikasikan konektor untuk mempermudah akses ke APIGoogle Cloud lain dalam alur kerja, dan untuk mengintegrasikan alur kerja Anda dengan produkGoogle Cloud tersebut. Google Cloud 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 panggilan layanan karena menangani pemformatan permintaan untuk Anda, menyediakan metode dan argumen sehingga Anda tidak perlu mengetahui detail Google Cloud API. Untuk mempelajari lebih lanjut autentikasi, dan perilaku 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 memberikan input ke API.
  • Parameter khusus konektor (opsional):
    • TIMEOUT_IN_SECONDS: waktu dalam detik. Durasi end-to-end yang diizinkan untuk panggilan konektor sebelum menampilkan pengecualian waktu tunggu. Nilai defaultnya adalah 1800 dan ini harus menjadi nilai maksimum untuk metode konektor yang bukan 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 disetel ke True, panggilan pemanggilan konektor tidak akan memblokir jika permintaan awal untuk mengelola atau memperbarui 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 konektor disimpan.

Contoh

Alur kerja berikut menunjukkan penggunaan konektor Cloud Storage API dan konektor Cloud Translation API untuk menerjemahkan dua file ke dalam bahasa Prancis dan Spanyol, lalu 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 berikutnya