הפעלת שירות של Google Cloud באמצעות מחבר

‫Workflows מפרסם מחברים כדי להקל על הגישה לממשקי API אחרים שלGoogle Cloud בתוך תהליך עבודה, וכדי לשלב את תהליכי העבודה עם מוצרים כאלה. Google Cloud לדוגמה, אפשר להשתמש במחברים כדי לפרסם הודעות Pub/Sub, לקרוא או לכתוב נתונים במסד נתונים של Firestore או לאחזר מפתחות אימות מ-Secret Manager. לעיון במפרט מפורט של המחברים הזמינים, אפשר לעיין במפרט המחברים.

מחברים מפשטים את הקריאה לשירותים כי הם מטפלים בפורמט של הבקשות בשבילכם, ומספקים שיטות וארגומנטים כך שלא צריך לדעת את הפרטים של Google Cloud API. מידע נוסף על אימות ועל התנהגות במהלך ניסיונות חוזרים ופעולות ממושכות זמין במאמר הסבר על מחברים.

הפעלת שיחה עם מחבר

בדומה להפעלת נקודת קצה (endpoint) של HTTP, כדי לבצע קריאה למחבר צריך להשתמש בשדות call ו-args. אפשר לציין ערך של זמן קצוב לתפוגה ומדיניות של דגימה באמצעות הבלוק 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

מחליפים את מה שכתוב בשדות הבאים:

  • STEP_NAME: שם השלב.
  • CONNECTOR (חובה): שיטת המחבר בטופס googleapis.gcp_service.version.resource.operation. לדוגמה: googleapis.bigquery.v2.tables.get.
  • ARG ו-ARG_VALUE (חובה): כל קריאה של מחבר דורשת ארגומנטים שונים.
  • KEY ו-KEY_VALUE (אופציונלי): שדות להזנת קלט ל-API.
  • פרמטרים ספציפיים למחבר (אופציונלי):
    • TIMEOUT_IN_SECONDS: הזמן בשניות. משך הזמן הכולל שהקריאה למחבר יכולה לפעול לפני שמוחזר חריג של פסק זמן. ערך ברירת המחדל הוא 1800, וזה צריך להיות הערך המקסימלי לשיטות של מחברים שלא מפעילות פעולות ארוכות טווח. אחרת, עבור פעולות שפועלות לאורך זמן, הזמן הקצוב לתפוגה המקסימלי לקריאה של מחבר הוא 31536000 שניות (שנה אחת).
    • INITIAL_DELAY_IN_SECONDS: פרמטר של מדיניות שליחת בקשות עם ערך ברירת מחדל של 1.0. רלוונטי רק לקריאות של פעולות ארוכות.
    • MULTIPLIER_VALUE: פרמטר של מדיניות שליחת בקשות עם ערך ברירת מחדל של 1.25. ההגדרה הזו רלוונטית רק לקריאות של פעולות ממושכות.
    • MAX_DELAY_IN_SECONDS: פרמטר של מדיניות שליחת בקשות עם ערך ברירת מחדל של 60.0. ההגדרה רלוונטית רק לקריאות של פעולות ארוכות טווח.
    • SKIP_POLLING_SWITCH: אם הערך הוא True, קריאת ההפעלה של המחבר לא חוסמת אם הבקשה הראשונית לניהול או לעדכון המשאב מצליחה (בדרך כלל HTTP POST, HTTP UPDATE או HTTP DELETE). אם הבקשה הראשונית לא מצליחה, יכול להיות שיהיו ניסיונות חוזרים. הדיגום של הסטטוס (HTTP GET בקשות שמתבצעות אחרי הבקשה הראשונית) מדלג על הפעולה הממושכת אחרי שהבקשה הראשונית מסתיימת. ערך ברירת המחדל הוא False.
    • OAUTH2_SCOPE: היקפי הרשאות של OAuth2 להעברה אל Google API. יכול להיות מחרוזת, רשימת מחרוזות, מחרוזת מופרדת ברווחים או מחרוזת מופרדת בפסיקים.
  • RESPONSE_VALUE (אופציונלי): שם המשתנה שבו מאוחסן התוצאה של שלב הפעלת קריאה למחבר.

דוגמה

בתרשים זרימת העבודה הבא מוצג שימוש במחבר Cloud Storage API ובמחבר Cloud Translation API כדי לתרגם שני קבצים לצרפתית ולספרדית, ולשמור את התוצאות בקטגוריה של 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

המאמרים הבאים