ฟังก์ชัน Google Cloud ใน C#

Google Cloud Functions ใน C#

เกี่ยวกับ Codelab นี้

subjectอัปเดตล่าสุดเมื่อ ต.ค. 7, 2024
account_circleเขียนโดย Mete Atamel

1 บทนำ

ฟังก์ชัน Google Cloud Run เป็นแพลตฟอร์มการประมวลผลแบบ Serverless ที่ขับเคลื่อนด้วยเหตุการณ์ ฟังก์ชัน Cloud Run ช่วยให้คุณเขียนโค้ดได้โดยไม่ต้องกังวลเกี่ยวกับการเตรียมทรัพยากรหรือการขยายขนาดเพื่อรองรับข้อกำหนดที่เปลี่ยนแปลงไป

ฟังก์ชัน Cloud Run มี 2 ประเภท ได้แก่

  • ฟังก์ชัน HTTP จะตอบสนองต่อคำขอ HTTP
  • ฟังก์ชันเหตุการณ์จะทริกเกอร์โดยเหตุการณ์ เช่น ข้อความที่เผยแพร่ไปยัง Cloud Pub/Sub หรือไฟล์ที่อัปโหลดไปยัง Cloud Storage

efb3268e3b74ed4f.png

โค้ดแล็บนี้จะแนะนำการสร้างฟังก์ชัน Cloud Run ของคุณเองใน C# กล่าวโดยละเอียดคือ คุณจะนำฟังก์ชัน C# ที่ตอบสนองต่อ HTTP และ CloudEvents จากแหล่งที่มาต่างๆ ของ Google Cloud ไปใช้งาน

สิ่งที่คุณจะได้เรียนรู้

  • Functions Framework สำหรับ .NET
  • วิธีเขียนฟังก์ชัน HTTP
  • วิธีเขียนฟังก์ชันที่ทริกเกอร์เหตุการณ์ซึ่งตอบสนองต่อเหตุการณ์ใน Cloud Storage
  • วิธีเขียนฟังก์ชันที่ทริกเกอร์โดยเหตุการณ์ซึ่งตอบสนองต่อเหตุการณ์ Cloud Pub/Sub
  • วิธีเขียนฟังก์ชันที่ทริกเกอร์เหตุการณ์ซึ่งตอบสนองต่อเหตุการณ์ประเภทใดก็ได้

2 การตั้งค่าและข้อกําหนด

การตั้งค่าสภาพแวดล้อมด้วยตนเอง

  1. ลงชื่อเข้าใช้ Google Cloud Console และสร้างโปรเจ็กต์ใหม่หรือใช้โปรเจ็กต์ที่มีอยู่ซ้ำ หากยังไม่มีบัญชี Gmail หรือ Google Workspace คุณต้องสร้างบัญชี

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • ชื่อโปรเจ็กต์คือชื่อที่แสดงสำหรับผู้เข้าร่วมโปรเจ็กต์นี้ ซึ่งเป็นสตริงอักขระที่ Google APIs ไม่ได้ใช้ โดยคุณจะอัปเดตได้ทุกเมื่อ
  • รหัสโปรเจ็กต์ต้องไม่ซ้ำกันในโปรเจ็กต์ Google Cloud ทั้งหมดและจะเปลี่ยนแปลงไม่ได้ (เปลี่ยนแปลงไม่ได้หลังจากตั้งค่าแล้ว) คอนโซล Cloud จะสร้างสตริงที่ไม่ซ้ำกันโดยอัตโนมัติ ซึ่งปกติแล้วคุณไม่จำเป็นต้องสนใจว่าสตริงนั้นจะเป็นอะไร ในโค้ดแล็บส่วนใหญ่ คุณจะต้องอ้างอิงรหัสโปรเจ็กต์ (โดยปกติจะระบุเป็น PROJECT_ID) หากไม่ชอบรหัสที่สร้างขึ้น คุณก็สร้างรหัสอื่นแบบสุ่มได้ หรือจะลองใช้อุปกรณ์ของคุณเองเพื่อดูว่าฟีเจอร์นี้พร้อมใช้งานหรือไม่ก็ได้ คุณจะเปลี่ยนแปลงชื่อหลังจากขั้นตอนนี้ไม่ได้ และชื่อดังกล่าวจะคงอยู่ตลอดระยะเวลาของโปรเจ็กต์
  • โปรดทราบว่ามีค่าที่ 3 ซึ่งเป็นหมายเลขโปรเจ็กต์ที่ API บางรายการใช้ ดูข้อมูลเพิ่มเติมเกี่ยวกับค่าทั้ง 3 รายการนี้ได้ในเอกสารประกอบ
  1. ถัดไป คุณจะต้องเปิดใช้การเรียกเก็บเงินใน Cloud Console เพื่อใช้ทรัพยากร/API ของ Cloud การทำตามโค้ดแล็บนี้ไม่น่าจะเสียค่าใช้จ่ายมากนัก หากต้องการปิดใช้ทรัพยากรเพื่อไม่ให้มีการเรียกเก็บเงินหลังจากบทแนะนำนี้ คุณสามารถลบทรัพยากรที่สร้างไว้หรือลบทั้งโปรเจ็กต์ได้ ผู้ใช้ใหม่ของ Google Cloud มีสิทธิ์เข้าร่วมโปรแกรมช่วงทดลองใช้ฟรีมูลค่า$300 USD

เริ่ม Cloud Shell

แม้ว่า Google Cloud จะทำงานจากระยะไกลจากแล็ปท็อปได้ แต่ในโค้ดแล็บนี้ คุณจะใช้ Google Cloud Shell ซึ่งเป็นสภาพแวดล้อมบรรทัดคำสั่งที่ทำงานในระบบคลาวด์

จากคอนโซล Google Cloud ให้คลิกไอคอน Cloud Shell ในแถบเครื่องมือด้านขวาบน

55efc1aaa7a4d3ad.png

การจัดสรรและเชื่อมต่อกับสภาพแวดล้อมจะใช้เวลาเพียงไม่กี่นาที เมื่อดำเนินการเสร็จแล้ว คุณควรเห็นข้อมูลดังต่อไปนี้

7ffe5cbb04455448.png

เครื่องเสมือนนี้โหลดเครื่องมือการพัฒนาทั้งหมดที่คุณต้องการ ซึ่งจะมีไดเรกทอรีหลักขนาด 5 GB ถาวรและทำงานบน Google Cloud ซึ่งจะช่วยเพิ่มประสิทธิภาพเครือข่ายและการรับรองได้อย่างมีประสิทธิภาพ คุณทํางานทั้งหมดในโค้ดแล็บนี้ได้ภายในเบราว์เซอร์ คุณไม่จำเป็นต้องติดตั้งอะไรเลย

3 ก่อนเริ่มต้น

ใน Cloud Shell ให้เรียกใช้คําสั่งต่อไปนี้เพื่อเปิดใช้บริการที่จําเป็น

gcloud services enable \
  artifactregistry.googleapis.com \
  cloudbuild.googleapis.com \
  cloudfunctions.googleapis.com \
  eventarc.googleapis.com \
  run.googleapis.com

ถัดไป ให้ตั้งค่าภูมิภาค

REGION=<YOUR_REGION>

ในโค้ดแล็บนี้ คุณจะต้องสร้างบัญชีบริการที่มีสิทธิ์ EventArc ที่จำเป็นและบทบาทผู้เรียกใช้ Cloud Run เพื่อรับเหตุการณ์จาก Cloud Storage และเรียกใช้ฟังก์ชัน Cloud Run

ขั้นแรก ให้สร้างบัญชีบริการ

PROJECT_ID=$(gcloud config get-value core/project)
PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')

SERVICE_ACCOUNT="cloud-run-functions"
SERVICE_ACCOUNT_ADDRESS=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com

gcloud iam service-accounts create $SERVICE_ACCOUNT \
  --display-name="Cloud Run functions Eventarc service account"

จากนั้นให้บทบาทผู้รับเหตุการณ์ Eventarc (roles/eventarc.eventReceiver) ในโปรเจ็กต์แก่บัญชีบริการที่เชื่อมโยงกับทริกเกอร์ Eventarc เพื่อให้ทริกเกอร์รับเหตุการณ์จากผู้ให้บริการเหตุการณ์ได้

gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member serviceAccount:$SERVICE_ACCOUNT_ADDRESS \
  --role=roles/eventarc.eventReceiver

จากนั้นให้สิทธิ์บัญชีบริการเป็นบทบาทผู้เรียกใช้ Cloud Run เพื่อให้เรียกใช้ฟังก์ชันได้

gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member serviceAccount:$SERVICE_ACCOUNT_ADDRESS \
  --role=roles/run.invoker

4 Functions Framework สำหรับ .NET

เฟรมเวิร์ก Functions สำหรับ .NET เป็นเฟรมเวิร์ก FaaS (Function as a Service) แบบโอเพนซอร์สสําหรับเขียนฟังก์ชัน .NET ที่นําไปใช้ได้กับหลายแพลตฟอร์ม ซึ่งทีม Google Cloud Functions เป็นผู้นําเสนอ

เฟรมเวิร์กฟังก์ชันช่วยให้คุณเขียนฟังก์ชันที่มีน้ำหนักเบาซึ่งทำงานได้ในสภาพแวดล้อมต่างๆ มากมาย ซึ่งรวมถึง

  • ฟังก์ชัน Google Cloud Run
  • เครื่องสำหรับพัฒนาซอฟต์แวร์ของคุณ
  • Cloud Run และ Cloud Run บน GKE
  • สภาพแวดล้อมที่อิงตาม Knative

ในโค้ดแล็บนี้ คุณจะใช้เฟรมเวิร์ก Functions สำหรับ .NET และเทมเพลตของเฟรมเวิร์กเพื่อสร้างและทำให้ Cloud Functions ใช้งานได้ใน C#

ใน Cloud Shell ให้เรียกใช้คําสั่งต่อไปนี้เพื่อติดตั้งเทมเพลต Cloud Functions สําหรับ dotnet

dotnet new install Google.Cloud.Functions.Templates

ซึ่งจะติดตั้งเทมเพลต 3 รายการสําหรับ dotnet เทมเพลตแต่ละรายการมีให้บริการใน C#, F# และ VB (แต่คุณจะใช้เฉพาะ C# ในห้องทดลองนี้) คุณสามารถตรวจสอบว่าติดตั้งเทมเพลตแล้วโดยเรียกใช้คำสั่งต่อไปนี้

dotnet new list

Templates                                                 Short Name            
-----------------------------------------------------------------------
Google Cloud Functions CloudEvent Function                gcf-event
Google Cloud Functions CloudEvent Function (Untyped)      gcf-untyped-event
Google Cloud Functions HttpFunction                       gcf-http

5 ฟังก์ชัน HTTP

คุณจะต้องสร้างและทำให้ฟังก์ชัน HTTP ใช้งานได้เพื่อตอบสนองต่อคำขอ HTTP

สร้างฟังก์ชัน HTTP โดยใช้เทมเพลต gcf-http

mkdir HelloHttp
cd HelloHttp
dotnet new gcf-http

ซึ่งจะสร้างโปรเจ็กต์และไฟล์ Function.cs ที่ตอบสนองต่อคำขอ HTTP

เปลี่ยนเฟรมเวิร์กเป้าหมายเป็น net8.0 ในไฟล์ .csproj โดยทำดังนี้

<TargetFramework>net8.0</TargetFramework>

หากต้องการทำให้ฟังก์ชัน Cloud Run ใช้งานได้ใน Cloud Run โดยตรง ให้เรียกใช้คําสั่งต่อไปนี้

gcloud beta run deploy hello-http-function \
    --source . \
    --function HelloHttp.Function \
    --base-image dotnet8 \
    --region $REGION \
    --allow-unauthenticated

หากต้องการทําให้การเผยแพร่เป็น Cloud Functions รุ่นที่ 2 ให้ใช้คําสั่งต่อไปนี้

gcloud functions deploy hello-http-function \
    --allow-unauthenticated \
    --entry-point HelloHttp.Function \
    --gen2 \
    --region $REGION \
    --runtime dotnet8 \
    --trigger-http

เมื่อทําให้การเผยแพร่ฟังก์ชันแล้ว คุณจะเรียกใช้ฟังก์ชันได้โดยใช้คําสั่ง curl ต่อไปนี้

SERVICE_URL=$(gcloud run services describe hello-http-function --platform managed --region $REGION --format 'value(status.url)')

curl $SERVICE_URL

6 ฟังก์ชัน CloudEvent - GCS

คุณจะต้องสร้างและทำให้ฟังก์ชัน CloudEvent ใช้งานได้ ซึ่งจะตอบสนองต่อเหตุการณ์ Google Cloud Storage (GCS)

ก่อนอื่น ให้สร้างที่เก็บข้อมูล Cloud Storage นี่คือที่เก็บข้อมูลที่คุณจะใช้ฟังเหตุการณ์ในภายหลัง

BUCKET_NAME="cloud-functions-bucket-${PROJECT_ID}"
gsutil mb -l us-central1 gs://${BUCKET_NAME}

สร้างฟังก์ชัน CloudEvent โดยใช้เทมเพลต gcf-event

cd ..
mkdir HelloGcs
cd HelloGcs
dotnet new gcf-event

ซึ่งจะสร้างโปรเจ็กต์และไฟล์ Function.cs ที่ตอบสนองต่อคำขอ CloudEvent รวมถึงแยกวิเคราะห์ข้อมูลของ CloudEvent เป็น StorageObjectData ด้วย

เปลี่ยนเฟรมเวิร์กเป้าหมายเป็น net8.0 ในไฟล์ .csproj โดยทำดังนี้

<TargetFramework>net8.0</TargetFramework>

หากต้องการทำให้ฟังก์ชัน Cloud Run ใช้งานได้ใน Cloud Run โดยตรง ก่อนอื่นให้ทำให้ฟังก์ชันใช้งานได้ จากนั้นสร้างทริกเกอร์สำหรับฟังก์ชันนั้น

gcloud beta run deploy hello-gcs-function \
      --source . \
      --function HelloGcs.Function \
      --region $REGION \
      --base-image dotnet8 \
      --no-allow-unauthenticated

ตอนนี้ให้สร้างทริกเกอร์สําหรับฟังก์ชัน Cloud Run

BUCKET_REGION=$REGION

gcloud eventarc triggers create hello-gcs-function-trigger \
     --location=$REGION \
     --destination-run-service=hello-gcs-function \
    --destination-run-region=$BUCKET_REGION \
     --event-filters="type=google.cloud.storage.object.v1.finalized" \
     --event-filters="bucket=$BUCKET_NAME" \
     --service-account=$SERVICE_ACCOUNT_ADDRESS

หากต้องการทําให้การเผยแพร่เป็น Cloud Functions รุ่นที่ 2 ให้ใช้คําสั่งต่อไปนี้เพื่อเผยแพร่ฟังก์ชันโดยใช้ Flag trigger-event และ trigger-resource

gcloud functions deploy hello-gcs-function \
    --allow-unauthenticated \
    --entry-point HelloGcs.Function \
    --gen2 \
    --region $REGION \
    --runtime dotnet8 \
    --trigger-event google.storage.object.finalize \
    --trigger-resource ${BUCKET_NAME} \
    --service-account=$SERVICE_ACCOUNT_ADDRESS

หลังจากผ่านไป 2-3 นาที ฟังก์ชันจะปรากฏใน Cloud Console

c28654d74bb31420.png

ทริกเกอร์ฟังก์ชันโดยการอัปโหลดไฟล์ไปยังที่เก็บข้อมูลของพื้นที่เก็บข้อมูล

echo "Hello from Storage" > random.txt
gsutil cp random.txt gs://${BUCKET_NAME}

ยืนยันว่าฟังก์ชันทริกเกอร์โดยการอ่านบันทึก

สําหรับฟังก์ชัน Cloud Run ให้เรียกใช้คําสั่งนี้

gcloud logging read "resource.labels.service_name=hello-gcs-function AND textPayload: Name" --format=json

สําหรับฟังก์ชันรุ่นที่ 2 ให้เรียกใช้คําสั่งนี้

gcloud functions logs read hello-gcs-function \
    --gen2 \
    --region us-central1

7 ฟังก์ชัน CloudEvent - Pub/Sub

คุณจะต้องสร้างและทำให้ฟังก์ชัน CloudEvent ทํางานเพื่อตอบสนองต่อเหตุการณ์ Cloud Pub/Sub

ก่อนอื่นให้สร้างหัวข้อ Cloud Pub/Sub ที่จะส่งเหตุการณ์

TOPIC_NAME=cloud-functions-topic
gcloud pubsub topics create ${TOPIC_NAME}

สร้างฟังก์ชัน CloudEvent โดยใช้เทมเพลต gcf-event

cd ..
mkdir HelloPubSub
cd HelloPubSub
dotnet new gcf-event

ซึ่งจะสร้างโปรเจ็กต์และไฟล์ Function.cs ที่ตอบสนองต่อคำขอ CloudEvent รวมถึงแยกวิเคราะห์ข้อมูล CloudEvent เป็น StorageObjectData โดยค่าเริ่มต้นด้วย

เปลี่ยนเฟรมเวิร์กเป้าหมายเป็น net8.0 ในไฟล์ .csproj โดยทำดังนี้

<TargetFramework>net8.0</TargetFramework>

เปลี่ยน StorageObjectData เป็น MessagePublishedData เพื่อแยกวิเคราะห์ข้อความ Pub/Sub เปลี่ยน Google.Events.Protobuf.Cloud.Storage.V1 เป็น Google.Events.Protobuf.Cloud.PubSub.V1

ในตอนท้าย ฟังก์ชันควรมีลักษณะดังนี้

using CloudNative.CloudEvents;
using Google.Cloud.Functions.Framework;
using Google.Events.Protobuf.Cloud.PubSub.V1;
using System;
using System.Threading;
using System.Threading.Tasks;

namespace HelloPubSub;

public class Function : ICloudEventFunction<MessagePublishedData>
{
    public Task HandleAsync(CloudEvent cloudEvent, MessagePublishedData data, CancellationToken cancellationToken)
    {
        var nameFromMessage = data.Message?.TextData;
        var name = string.IsNullOrEmpty(nameFromMessage) ? "world" : nameFromMessage;
        Console.WriteLine($"Hello {name}");
        return Task.CompletedTask;
    }
}

หากต้องการทำให้ฟังก์ชัน Cloud Run ใช้งานได้ใน Cloud Run โดยตรง ก่อนอื่นให้ทำให้ฟังก์ชันใช้งานได้ จากนั้นสร้างทริกเกอร์สำหรับฟังก์ชันนั้น

gcloud beta run deploy hello-pubsub-function \
      --source . \
      --function HelloPubSub.Function \
      --region $REGION \
      --base-image dotnet8 \
      --no-allow-unauthenticated \
      --service-account=$SERVICE_ACCOUNT_ADDRESS

ตอนนี้ให้สร้างทริกเกอร์สําหรับฟังก์ชัน Cloud Run

gcloud eventarc triggers create my-pubsub-trigger \
    --location=$REGION \
    --service-account=$SERVICE_ACCOUNT_ADDRESS \
    --destination-run-service=hello-pubsub-function \
    --destination-run-region=$REGION \
    --destination-run-path="/" \
    --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
    --transport-topic=projects/$PROJECT_ID/topics/$TOPIC_NAME

หากต้องการทำให้เป็น Cloud Functions รุ่นที่ 2 ให้ใช้คำสั่งต่อไปนี้เพื่อทำให้ฟังก์ชันใช้งานได้โดยใช้ Flag trigger-topic

gcloud functions deploy hello-pubsub-function \
    --allow-unauthenticated \
    --entry-point HelloPubSub.Function \
    --gen2 \
    --region us-central1 \
    --runtime dotnet8 \
    --trigger-topic ${TOPIC_NAME}

หลังจากผ่านไป 2-3 นาที ฟังก์ชันจะปรากฏใน Cloud Console

3443808da7caf3bc.png

ทริกเกอร์ฟังก์ชันนี้โดยการเผยแพร่ข้อความไปยังหัวข้อ

gcloud pubsub topics publish ${TOPIC_NAME} --message="World"

ยืนยันว่าฟังก์ชันทริกเกอร์โดยการอ่านบันทึก

สําหรับฟังก์ชัน Cloud Run ให้เรียกใช้คําสั่งนี้

gcloud logging read "resource.labels.service_name=hello-pubsub-function AND textPayload: World" --format=json

สําหรับฟังก์ชันรุ่นที่ 2 ให้เรียกใช้คําสั่งนี้

gcloud functions logs read hello-pubsub-function \
    --gen2 \
    --region us-central1

8 ฟังก์ชัน CloudEvent - ไม่มีการกําหนดประเภท

หากคุณกำลังทดสอบ CloudEvents และยังไม่มีรูปแบบข้อมูลเพย์โหลดที่ต้องการใช้ หรือต้องการให้ฟังก์ชันจัดการเหตุการณ์ในระบบคลาวด์ได้ คุณสามารถใช้ฟังก์ชัน CloudEvent ที่ไม่มีประเภท

สร้างฟังก์ชัน CloudEvent โดยใช้เทมเพลต gcf-untyped-event

cd ..
mkdir HelloUntyped
cd HelloUntyped
dotnet new gcf-untyped-event

ซึ่งจะสร้างโปรเจ็กต์และไฟล์ Function.cs ที่ตอบสนองต่อคำขอ CloudEvent โดยไม่พยายามแยกวิเคราะห์ข้อมูลของ CloudEvent

เปลี่ยนเฟรมเวิร์กเป้าหมายเป็น net8.0 ในไฟล์ .csproj โดยทำดังนี้

<TargetFramework>net8.0</TargetFramework>

หากต้องการทำให้ฟังก์ชัน Cloud Run ใช้งานได้ใน Cloud Run โดยตรง ก่อนอื่นให้ทำให้ฟังก์ชันใช้งานได้ จากนั้นสร้างทริกเกอร์สำหรับฟังก์ชันนั้น

gcloud beta run deploy hello-untyped-function \
      --source . \
      --function HelloUntyped.Function \
      --region $REGION \
      --base-image dotnet8 \
      --no-allow-unauthenticated

ตอนนี้ให้สร้างทริกเกอร์สําหรับฟังก์ชัน Cloud Run

BUCKET_REGION=$REGION

gcloud eventarc triggers create hello-untyped-function-trigger \
     --location=$REGION \
     --destination-run-service=hello-untyped-function \
    --destination-run-region=$BUCKET_REGION \
     --event-filters="type=google.cloud.storage.object.v1.finalized" \
     --event-filters="bucket=$BUCKET_NAME" \
     --service-account=$SERVICE_ACCOUNT_ADDRESS

หากต้องการทําให้การเผยแพร่เป็น Cloud Functions รุ่นที่ 2 ให้ใช้คําสั่งต่อไปนี้เพื่อเผยแพร่ฟังก์ชันโดยใช้ Flag trigger-event และ trigger-resource

gcloud functions deploy hello-untyped-function \
    --allow-unauthenticated \
    --entry-point HelloUntyped.Function \
    --gen2 \
    --region us-central1 \
    --runtime dotnet8 \
    --trigger-event google.storage.object.finalize \
    --trigger-resource ${BUCKET_NAME}

ฟังก์ชันจะทริกเกอร์เมื่อมีการอัปโหลดไฟล์ไปยังที่เก็บข้อมูลของพื้นที่เก็บข้อมูล

หลังจากผ่านไป 2-3 นาที ฟังก์ชันจะปรากฏใน Cloud Console

afe56530826787c6.png

ทริกเกอร์ฟังก์ชันโดยการอัปโหลดไฟล์ไปยังที่เก็บข้อมูลของพื้นที่เก็บข้อมูล

echo "Hello from Storage" > random.txt
gsutil cp random.txt gs://${BUCKET_NAME}

ยืนยันว่าฟังก์ชันทริกเกอร์โดยการอ่านบันทึก

สําหรับฟังก์ชัน Cloud Run ให้เรียกใช้คําสั่งนี้

gcloud logging read "resource.labels.service_name=hello-gcs-function AND textPayload: Name" --format=json

สําหรับฟังก์ชันรุ่นที่ 2 ให้เรียกใช้คําสั่งนี้

gcloud functions logs read hello-untyped-function \
    --gen2 \
    --region us-central1

9 ยินดีด้วย

ยินดีด้วยที่ทํา Codelab จนเสร็จสมบูรณ์

สิ่งที่เราได้พูดถึง

  • Functions Framework สำหรับ .NET
  • วิธีเขียน HTTP Cloud Function
  • วิธีเขียนฟังก์ชัน CloudEvent ที่ตอบสนองต่อเหตุการณ์ Cloud Storage
  • วิธีเขียนฟังก์ชัน CloudEvent ที่ตอบสนองต่อเหตุการณ์ Cloud Pub/Sub
  • วิธีเขียนฟังก์ชัน CloudEvent ที่ตอบสนองต่อเหตุการณ์ประเภทใดก็ได้