התקשרות לפונקציות מקומיות
הגדרה
במאמר הזה אנחנו מניחים שהגדרתם פונקציה שפועלת באופן מקומי ב-localhost באמצעות Functions Framework או Buildpacks. בנוסף, מניחים שהתקנתם את הכלי curl במחשב המקומי.
שליחת בקשות לפונקציות מקומיות
אפשר להפעיל פונקציות שפועלות באופן מקומי על ידי שליחת בקשות HTTP שמנותבות דרך תהליך מקומי של הגשת תוכן.
כדי לדעת איפה הפונקציה פועלת באופן מקומי, בודקים את כתובת ה-URL שמוצגת כשמתחילים להריץ את הפונקציה. כברירת מחדל, הפונקציה תתארח בכתובת localhost:8080.
פונקציות HTTP
כשבודקים את פונקציית ה-HTTP מסביבת הפיתוח, בדרך כלל היא מאזינה לבקשות ב-localhost:8080. אפשר לגשת לממשק הזה רק מהמכונה או מהמכונה הווירטואלית שבהן הפונקציה פועלת. בקשות שנשלחות ממערכות אחרות לא יכולות להגיע אליו. לכן, אתם צריכים לשלוח את בקשת ה-HTTP מאותה מערכת שבה הפונקציה פועלת. בדוגמאות הבאות, אם הפונקציה שלכם מאזינה ליציאה שונה מ-8080, צריך להחליף את 8080 בדוגמה במספר היציאה של הפונקציה.
בדיקת פונקציות HTTP באמצעות Cloud Shell
אם אתם משתמשים ב-Cloud Shell כדי ליצור ולבדוק את הפונקציה, מפעילים את הפונקציה באופן מקומי בחלון הטרמינל של Cloud Shell, ואז מנפיקים את בקשת הטריגר HTTP מדפדפן או ממופע curl באופן הבא:
דפדפן
לוחצים על סמל בסרגל הכלים של Cloud Shell ובוחרים באפשרות port 8080 או באפשרות Change port כדי לבחור יציאה אחרת. ייפתח חלון דפדפן במערכת הנכונה ותישלח בקשת GET ליציאה שצוינה.
Curl
כדי לשלוט בפורמט של בקשת ה-HTTP או לראות את התשובה ללא פורמט, משתמשים ב-curl:
- לוחצים על הסמל + בסרגל התפריטים של Cloud Shell כדי לפתוח חלון טרמינל חדש באותה מערכת שבה הפונקציה פועלת.
בחלון הזה, מריצים את הפקודה
curlכדי להפעיל את הפונקציה. לדוגמה:curl localhost:8080
בדיקת פונקציות HTTP בשרת שולחני
אם אתם מפתחים ומריצים את הפונקציה במערכת שולחנית מקומית, קודם מריצים את הפונקציה באופן מקומי, ואז מנפיקים את בקשת ההפעלה של HTTP מדפדפן או ממופע curl באופן הבא:
דפדפן
פותחים חלון חדש או כרטיסייה חדשה בדפדפן ומקלידים http://localhost:8080 בסרגל הכתובות של הדפדפן. תיפתח כרטיסייה בדפדפן עם הכתובת localhost:8080 בשרת של שולחן העבודה כדי להפעיל את הפונקציה.
Curl
פותחים חלון טרמינל חדש במחשב המקומי, ואז מריצים את הפקודה curl בחלון הזה כדי להפעיל את הפונקציה. לדוגמה:
curl localhost:8080
הפקודה curl שצוינה מופעלת כדי להפעיל את הפונקציה, והתשובה מוצגת ללא עיצוב.
פונקציות CloudEvent
אפשר לשלוח אירועים לדוגמה לפונקציות CloudEvent באמצעות curl. בדוגמאות הבאות של בקשות curl מוצגות דרכים לשליחת אירועים לדוגמה של Cloud Pub/Sub ושל Cloud Storage לפונקציית CloudEvent שפועלת בכתובת localhost:8080.
Pub/Sub
curl localhost:8080 \ -X POST \ -H "Content-Type: application/json" \ -H "ce-id: 123451234512345" \ -H "ce-specversion: 1.0" \ -H "ce-time: 2020-01-02T12:34:56.789Z" \ -H "ce-type: google.cloud.pubsub.topic.v1.messagePublished" \ -H "ce-source: //pubsub.googleapis.com/projects/MY-PROJECT/topics/MY-TOPIC" \ -d '{ "message": { "data": "d29ybGQ=", "attributes": { "attr1":"attr1-value" } }, "subscription": "projects/MY-PROJECT/subscriptions/MY-SUB" }'
אחסון
curl localhost:8080 \ -X POST \ -H "Content-Type: application/json" \ -H "ce-id: 123451234512345" \ -H "ce-specversion: 1.0" \ -H "ce-time: 2020-01-02T12:34:56.789Z" \ -H "ce-type: google.cloud.storage.object.v1.finalized" \ -H "ce-source: //storage.googleapis.com/projects/_/buckets/MY-BUCKET-NAME" \ -H "ce-subject: objects/MY_FILE.txt" \ -d '{ "bucket": "MY_BUCKET", "contentType": "text/plain", "kind": "storage#object", "md5Hash": "...", "metageneration": "1", "name": "MY_FILE.txt", "size": "352", "storageClass": "MULTI_REGIONAL", "timeCreated": "2020-04-23T07:38:57.230Z", "timeStorageClassUpdated": "2020-04-23T07:38:57.230Z", "updated": "2020-04-23T07:38:57.230Z" }'
פונקציות ברקע
אתם יכולים לשלוח אירועים לדוגמה אל פונקציות ברקע באמצעות curl. בדוגמאות הבאות של בקשות curl מוצגות דרכים לשליחת אירועים לדוגמה של Cloud Pub/Sub ושל Cloud Storage לפונקציית רקע שפועלת ב-localhost:8080.
Pub/Sub
# 'world' base64-encoded is 'd29ybGQ=' curl localhost:8080 \ -X POST \ -H "Content-Type: application/json" \ -d '{ "context": { "eventId":"1144231683168617", "timestamp":"2020-05-06T07:33:34.556Z", "eventType":"google.pubsub.topic.publish", "resource":{ "service":"pubsub.googleapis.com", "name":"projects/sample-project/topics/gcf-test", "type":"type.googleapis.com/google.pubsub.v1.PubsubMessage" } }, "data": { "@type": "type.googleapis.com/google.pubsub.v1.PubsubMessage", "attributes": { "attr1":"attr1-value" }, "data": "d29ybGQ=" } }'
אחסון
curl localhost:8080 \ -X POST \ -H "Content-Type: application/json" \ -d '{ "context": { "eventId": "1147091835525187", "timestamp": "2020-04-23T07:38:57.772Z", "eventType": "google.storage.object.finalize", "resource": { "service": "storage.googleapis.com", "name": "projects/_/buckets/MY_BUCKET/MY_FILE.txt", "type": "storage#object" } }, "data": { "bucket": "MY_BUCKET", "contentType": "text/plain", "kind": "storage#object", "md5Hash": "...", "metageneration": "1", "name": "MY_FILE.txt", "size": "352", "storageClass": "MULTI_REGIONAL", "timeCreated": "2020-04-23T07:38:57.230Z", "timeStorageClassUpdated": "2020-04-23T07:38:57.230Z", "updated": "2020-04-23T07:38:57.230Z" } }'