การทริกเกอร์การประมวลผลเหตุการณ์จาก Cloud Storage โดยใช้ฟังก์ชัน Eventarc และ Cloud Run

การทริกเกอร์การประมวลผลเหตุการณ์จาก Cloud Storage โดยใช้ฟังก์ชัน Eventarc และ Cloud Run

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

subjectอัปเดตล่าสุดเมื่อ ต.ค. 10, 2024
account_circleเขียนโดย Ameenah Burhan, Andrey Shakirov, Sara Ford

1 ภาพรวม

ในชั้นเรียนนี้ คุณจะได้เรียนรู้วิธีใช้เหตุการณ์ที่เก็บข้อมูล Cloud Storage และ Eventarc เพื่อทริกเกอร์การประมวลผลเหตุการณ์ คุณจะใช้ฟังก์ชัน Cloud Run เพื่อวิเคราะห์ข้อมูลและประมวลผลรูปภาพ ฟังก์ชันนี้จะใช้ Vision API ของ Google และบันทึกรูปภาพที่ได้กลับไปยังที่เก็บข้อมูล Cloud Storage

424779013ac38648.png

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

วิธีสร้างไปป์ไลน์การประมวลผลรูปภาพ

  • กำหนดค่าที่เก็บข้อมูลของพื้นที่เก็บข้อมูล
  • สร้างฟังก์ชัน Cloud Run เพื่ออ่านและเขียนออบเจ็กต์ใน Cloud Storage
  • ติดตั้งใช้งานทริกเกอร์ Eventarc
  • ผสานรวม Vision API เพื่อตรวจหารูปภาพอาหาร
  • ทดสอบและตรวจสอบโซลูชันจากต้นทางถึงปลายทาง

ข้อกำหนดเบื้องต้น

  • กิจกรรมนี้ถือว่าคุณคุ้นเคยกับ Cloud Console และสภาพแวดล้อมเชลล์
  • ประสบการณ์การใช้งาน Cloud Storage, ฟังก์ชัน Cloud Run หรือ Vision API ก่อนหน้านี้จะมีประโยชน์ แต่ไม่จำเป็นต้องมี

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

การตั้งค่าโปรเจ็กต์ที่อยู่ในระบบคลาวด์

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

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

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

เปิดใช้งาน Cloud Shell

เปิดใช้งาน Cloud Shell โดยคลิกไอคอนทางด้านขวาของแถบค้นหา

b02c63d9c7632ef8.png

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

  1. สร้างตัวแปรสภาพแวดล้อมที่เกี่ยวข้องกับโปรเจ็กต์และทรัพยากรโดยเรียกใช้คำสั่งด้านล่างในเทอร์มินัล Cloud Shell
export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_NAME=$(gcloud config get-value project)
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')
export REGION=us-east1
export UPLOAD_BUCKET_NAME=menu-item-uploads-$PROJECT_ID
export UPLOAD_BUCKET=gs://menu-item-uploads-$PROJECT_ID
export BUCKET_THUMBNAILS=gs://menu-item-thumbnails-$PROJECT_ID
export MENU_SERVICE_NAME=menu-service
export USER_EMAIL=$(gcloud config list account --format "value(core.account)")
  1. เปิดใช้ API ที่จําเป็นสําหรับห้องทดลอง
gcloud services enable \
    vision.googleapis.com \
    cloudfunctions.googleapis.com \
    pubsub.googleapis.com \
    cloudbuild.googleapis.com \
    logging.googleapis.com \
    eventarc.googleapis.com \
    artifactregistry.googleapis.com \
    run.googleapis.com \
    --quiet
  1. โคลนที่เก็บ
git clone https://github.com/GoogleCloudPlatform/cymbal-eats.git && cd cymbal-eats/cloud-functions

3 กำหนดค่าที่เก็บข้อมูล Cloud Storage

สร้างที่เก็บข้อมูล

สร้างที่เก็บข้อมูล Cloud Storage สำหรับการอัปโหลดและภาพขนาดย่อสำหรับไปป์ไลน์การประมวลผลรูปภาพ

ใช้คำสั่ง gsutil mb และชื่อที่ไม่ซ้ำกันเพื่อสร้างที่เก็บข้อมูล 2 รายการ

  1. อัปโหลดที่เก็บข้อมูลที่จะอัปโหลดรูปภาพก่อน
  2. ที่เก็บข้อมูลภาพขนาดย่อสำหรับจัดเก็บรูปภาพขนาดย่อที่สร้างขึ้น

สร้างที่เก็บข้อมูลเพื่ออัปโหลดรูปภาพใหม่

gsutil mb -p $PROJECT_ID -l $REGION $UPLOAD_BUCKET

ตัวอย่างเอาต์พุต

Creating gs://menu-item-uploads-cymbal-eats-8399-3119/...

สร้างที่เก็บข้อมูลเพื่อจัดเก็บภาพปกที่สร้างขึ้น

gsutil mb -p $PROJECT_ID -l $REGION $BUCKET_THUMBNAILS

ตัวอย่างเอาต์พุต

Creating gs://menu-item-thumbnails-cymbal-eats-8399-3119/...

อัปเดตสิทธิ์ที่เก็บข้อมูล

อัปเดตสิทธิ์ของที่เก็บข้อมูลเพื่ออนุญาตให้ผู้ใช้มีสิทธิ์อ่าน

ใช้คำสั่ง gsutil iam ch เพื่อให้สิทธิ์อ่านและเขียนออบเจ็กต์ในที่เก็บข้อมูล

gsutil iam ch allUsers:objectViewer $UPLOAD_BUCKET
gsutil iam ch allUsers
:objectViewer $BUCKET_THUMBNAILS

ตัวอย่างเอาต์พุต

Updated IAM policy for project [cymbal-eats-8399-3119].
[...]

4 กำหนดค่าบัญชีบริการ

สร้างบัญชีบริการที่กำหนดเองสำหรับ Cloud Function เพื่อประมวลผลภาพขนาดย่อ

export CF_SERVICE_ACCOUNT=thumbnail-service-sa
gcloud iam service-accounts create ${CF_SERVICE_ACCOUNT}

ให้บทบาท artifactregistry.reader เพื่ออนุญาตให้ดำเนินการอ่านจากที่เก็บอาร์ติแฟกต์

gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member "serviceAccount:${CF_SERVICE_ACCOUNT}@${PROJECT_ID}.iam.gserviceaccount.com" \
  --role "roles/artifactregistry.reader"

ให้บทบาท storage.objectCreator เพื่ออนุญาตให้จัดเก็บรูปภาพที่สร้างขึ้นในที่เก็บข้อมูลภาพขนาดย่อ

gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member "serviceAccount:${CF_SERVICE_ACCOUNT}@${PROJECT_ID}.iam.gserviceaccount.com" \
  --role "roles/storage.objectCreator"

ให้บทบาท run.invoker เพื่ออนุญาตการเรียกใช้บริการ Cloud Run

gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member "serviceAccount:${CF_SERVICE_ACCOUNT}@${PROJECT_ID}.iam.gserviceaccount.com" \
  --role "roles/run.invoker"

ให้บทบาท eventarc.eventReceiver เพื่ออนุญาตให้รับเหตุการณ์จากผู้ให้บริการ

gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member "serviceAccount:${CF_SERVICE_ACCOUNT}@${PROJECT_ID}.iam.gserviceaccount.com" \
  --role "roles/eventarc.eventReceiver"

ให้บทบาท pubsub.publisher แก่บัญชีบริการ Cloud Storage ซึ่งจะช่วยให้บัญชีบริการเผยแพร่เหตุการณ์ได้เมื่อมีการอัปโหลดรูปภาพไปยังที่เก็บข้อมูล

GCS_SERVICE_ACCOUNT=$(gsutil kms serviceaccount -p $PROJECT_NUMBER)

gcloud projects add
-iam-policy-binding $PROJECT_NUMBER \
   
--member "serviceAccount:$GCS_SERVICE_ACCOUNT" \
   
--role "roles/pubsub.publisher"

5 ภาพรวมของฟังก์ชันการประมวลผลรูปภาพ

สร้างฟังก์ชันเพื่อดาวน์โหลดรูปภาพจาก Cloud Storage, ปรับขนาดรูปภาพ และอัปโหลดรูปภาพกลับไปยัง Cloud Storage ฟังก์ชันนี้จะเรียก Vision API เพื่อกำหนดป้ายกำกับคำอธิบายให้กับรูปภาพ ฟังก์ชันจะตรวจสอบป้ายกํากับคําอธิบาย หากป้ายกำกับระบุว่ารูปภาพเป็น "อาหาร" ระบบจะส่งเหตุการณ์ไปยังบริการเมนูเพื่ออัปเดตรูปภาพและภาพขนาดย่อของรายการเมนู

4c3c3b758dba6a9f.png

การทริกเกอร์ฟังก์ชัน

ฟังก์ชัน Cloud Storage อิงตามการแจ้งเตือน Pub/Sub จาก Cloud Storage และรองรับประเภทเหตุการณ์ที่คล้ายกัน ดังนี้

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

มีการทำให้วัตถุสิ้นสุด

เหตุการณ์ "finalization" ของออบเจ็กต์จะทริกเกอร์เมื่อ "การเขียน" ออบเจ็กต์ Cloud Storage เสร็จสมบูรณ์ กล่าวโดยละเอียดคือ การสร้างออบเจ็กต์ใหม่หรือการเขียนทับออบเจ็กต์ที่มีอยู่จะทริกเกอร์เหตุการณ์นี้ ทริกเกอร์นี้จะละเว้นการดำเนินการอัปเดตข้อมูลเมตาและการเก็บถาวร

6 ผสานรวม Cloud Storage

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

ในชั้นเรียนนี้ คุณจะใช้ไลบรารีไคลเอ็นต์เพื่ออ่านและเขียนออบเจ็กต์ไปยัง Cloud Storage

การติดตั้งไลบรารีของไคลเอ็นต์

ไลบรารีของไคลเอ็นต์ระบบคลาวด์พร้อมให้บริการเป็นภาษาโปรแกรมยอดนิยมหลายภาษา หากต้องการเริ่มใช้ไลบรารี คุณต้องติดตั้งไลบรารีของไคลเอ็นต์

การใช้ไลบรารีของไคลเอ็นต์

รายละเอียดการติดตั้งใช้งานส่วนใหญ่จะขึ้นอยู่กับภาษาโปรแกรม หากต้องการใช้ไลบรารีไคลเอ็นต์ในแอปพลิเคชัน ขั้นตอนแรกคือการนําเข้าทรัพยากร Dependency ของ Cloud Storage เช่น ในโปรเจ็กต์ Node.js ระบบจะเพิ่มการนําเข้าในไฟล์ package.json ข้อมูลโค้ดด้านล่างแสดงประกาศของไฟล์ package.json ของห้องทดลองนี้

package.json

{
    "name": "thumbnail-service",
    "version": "0.1.0",
    "dependencies": {
      "@google-cloud/functions-framework": "^3.0.0",
      "@google-cloud/storage": "^5.18.2",
      "@google-cloud/vision": "^2.4.2",
        ...
    }
  }

ลงทะเบียนการเรียกกลับ CloudEvent

ลงทะเบียนการเรียกกลับ CloudEvent ด้วย Functions Framework ที่ Cloud Storage จะทริกเกอร์เมื่อมีการอัปโหลดรูปภาพใหม่ไปยังที่เก็บข้อมูล

index.js

functions.cloudEvent('process-thumbnails', async (cloudEvent) => {
    console.log(`Event ID: ${cloudEvent.id}`);
    console.log(`Event Type: ${cloudEvent.type}`);
    ...

การสร้างออบเจ็กต์ข้อมูลอ้างอิงพื้นที่เก็บข้อมูล

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

index.js

const storage = new Storage();
const bucket = storage.bucket(file.bucket);
const thumbBucket = storage.bucket(process.env.BUCKET_THUMBNAILS);

ดาวน์โหลดออบเจ็กต์ Cloud Storage

index.js

await bucket.file(file.name).download({
            destination: originalFile
        });

อัปโหลดออบเจ็กต์ไปยัง Cloud Storage

คุณส่งคำขออัปโหลดไปยัง Cloud Storage ได้ 3 วิธี ได้แก่ การอัปโหลดแบบคำขอเดียว การอัปโหลดแบบแบ่งหลายไฟล์ที่กลับมาดำเนินการต่อได้ หรือ XML API สําหรับการอัปโหลดขนาดใหญ่หรือการอัปโหลดสตรีมมิง ให้ใช้การอัปโหลดที่อัปโหลดต่อได้ เมื่อใช้ XML API ระบบจะอัปโหลดไฟล์เป็นชิ้นส่วนและประกอบเป็นออบเจ็กต์เดียว สำหรับออบเจ็กต์ขนาดเล็ก ให้ใช้การอัปโหลดแบบคำขอเดียว

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

index.js

const thumbnailImage = await thumbBucket.upload(thumbFile);

7 ผสานรวม Vision API

Cloud Vision ช่วยให้นักพัฒนาแอปผสานรวมฟีเจอร์การตรวจจับการมองเห็นไว้ภายในแอปพลิเคชันได้อย่างง่ายดาย ซึ่งรวมถึงการติดป้ายกำกับรูปภาพ การตรวจจับใบหน้าและจุดสังเกต การรู้จำอักขระด้วยภาพ (OCR) และการติดแท็กเนื้อหาที่อาจไม่เหมาะสม

การติดตั้งไลบรารีของไคลเอ็นต์

ไลบรารีของไคลเอ็นต์ระบบคลาวด์พร้อมให้บริการเป็นภาษาโปรแกรมยอดนิยมหลายภาษา หากต้องการเริ่มใช้ไลบรารี คุณต้องติดตั้งไลบรารีของไคลเอ็นต์

สร้างไคลเอ็นต์เครื่องมือกำกับเนื้อหารูปภาพ

หากต้องการเข้าถึง Google APIs โดยใช้ SDK อย่างเป็นทางการของไคลเอ็นต์ คุณจะต้องสร้างออบเจ็กต์บริการตามเอกสาร Discovery ของ API ซึ่งจะอธิบาย API ให้กับ SDK คุณจะต้องดึงข้อมูลจากบริการการค้นพบของ Vision API โดยใช้ข้อมูลเข้าสู่ระบบ

index.js

const client = new vision.ImageAnnotatorClient();

สร้างคําขอ Vision API

Vision API สามารถตรวจหาองค์ประกอบในไฟล์รูปภาพได้โดยส่งเนื้อหาของไฟล์รูปภาพเป็นสตริงที่เข้ารหัส Base64 ในเนื้อหาของคำขอ

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

  • ข้อมูลรูปภาพที่เข้ารหัส Base64
  • รายการองค์ประกอบที่คุณต้องการกำกับเนื้อหาเกี่ยวกับรูปภาพนั้น

index.js

        const client = new vision.ImageAnnotatorClient();
        const visionRequest = {
            image: { source: { imageUri: `gs://${file.bucket}/${file.name}` } },
            features: [
                { type: 'LABEL_DETECTION' },
            ]
        };
        const visionPromise = client.annotateImage(visionRequest);

8 ทำให้ฟังก์ชัน Cloud Run ใช้งานได้

บริการปรับขนาดรูปภาพนี้เป็นส่วนหนึ่งของระบบ Cymbal Eats ที่ใหญ่ขึ้น ในส่วนนี้ คุณจะใช้เฉพาะคอมโพเนนต์ที่เกี่ยวข้องกับฟีเจอร์การประมวลผลรูปภาพ การติดตั้งแบบสมบูรณ์จะรวม UI สำหรับการอัปโหลดรูปภาพและคําขอดาวน์สตรีมเพื่อจัดเก็บข้อมูลเมตาที่ได้ ความสามารถดังกล่าวไม่ได้ติดตั้งเป็นส่วนหนึ่งของห้องทดลองนี้

ระบบจะสร้างคอมโพเนนต์ต่อไปนี้ระหว่างการติดตั้งใช้งานฟังก์ชัน

  • ฟังก์ชัน Cloud Run
  • ทริกเกอร์ Eventarc
  • หัวข้อและการสมัครใช้บริการ Pub/Sub

ในเทอร์มินัล Cloud Shell ให้เรียกใช้คําสั่งด้านล่างเพื่อทําให้ฟังก์ชัน Cloud Run พร้อมใช้งานโดยที่เก็บข้อมูลทริกเกอร์ใน menu-item-uploads-$PROJECT_ID

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

ทำให้ฟังก์ชัน Cloud Run ใช้งานได้

gcloud beta run deploy process-thumbnails \
      --source=thumbnail \
      --function process-thumbnails \
      --region $REGION \
      --base-image google-22-full/nodejs20 \
      --no-allow-unauthenticated \
      --project=$PROJECT_ID \
--service-account="${CF_SERVICE_ACCOUNT}@${PROJECT_ID}.iam.gserviceaccount.com" \
--set-env-vars=BUCKET_THUMBNAILS=$BUCKET_THUMBNAILS,MENU_SERVICE_URL=$MENU_SERVICE_URL \
  --max-instances=1 \
  --quiet

ตัวอย่างเอาต์พุต

Done.                                                                                                                                                                                    
Service [process-thumbnails] revision [process-thumbnails-00001-abc] has been deployed and is serving 100 percent of traffic.
Service URL: https://process-thumbnails-000000000.us-east1.run.app

สร้างทริกเกอร์โดยทำดังนี้

gcloud eventarc triggers create process-thumbnails-trigger \
     --location=$REGION \
     --destination-run-service=process-thumbnails \
    --destination-run-region=$REGION \
     --event-filters="type=google.cloud.storage.object.v1.finalized" \
     --event-filters="bucket=$UPLOAD_BUCKET_NAME" \
     --service-account="${CF_SERVICE_ACCOUNT}@${PROJECT_ID}.iam.gserviceaccount.com"

ตัวอย่างเอาต์พุต

Creating trigger [process-thumbnails-trigger] in project [qwiklabs-gcp-02-53f8532696e1], location [us-east1]...done.                                                                     
WARNING: It may take up to 2 minutes for the new trigger to become active.

หากการติดตั้งใช้งานทริกเกอร์ไม่สำเร็จเนื่องจากปัญหาสิทธิ์ โปรดรอให้การเปลี่ยนแปลง IAM จากขั้นตอนก่อนหน้ามีผล ซึ่งโดยปกติจะใช้เวลา 1-2 นาที จากนั้นให้ลองทำให้เสร็จอีกครั้ง

ตัวอย่างเอาต์พุตข้อผิดพลาด

...If you recently started to use Eventarc, it may take a few minutes before all necessary permissions are propagated to the Service Agent...
[...] 

ในคอนโซล Cloud ให้ตรวจสอบบริการ Cloud Run ที่สร้างขึ้นสําหรับฟังก์ชัน

546c5c951cf0f2f.png

ในคอนโซล Cloud ให้ตรวจสอบทริกเกอร์ Eventarc ที่สร้างขึ้นสําหรับฟังก์ชัน

dec11309016b09ac.png

ในคอนโซลระบบคลาวด์ ให้ตรวจสอบหัวข้อและการสมัครใช้บริการ Pub/Sub ที่สร้างขึ้นสำหรับทริกเกอร์ Eventarc

affe089c39ae1465.png

a4c41ede2af300db.png

9 ทดสอบและตรวจสอบโซลูชันจากต้นทางถึงปลายทาง

อัปโหลดรูปภาพใหม่ไปยัง Cloud Storage และตรวจสอบความคืบหน้าของไปป์ไลน์ขณะที่ระบบวิเคราะห์รูปภาพ คุณจะทดสอบโซลูชันจากต้นทางถึงปลายทางโดยการตรวจสอบบันทึกของ Cloud Functions

กำลังอัปโหลดรูปภาพ

ab7b43f876f9c3a9.jpeg

  1. บันทึกรูปภาพนี้ลงในเครื่อง
  2. เปลี่ยนชื่อไฟล์ 1.jpg
  3. เปิดคอนโซล Cloud Storage
  4. คลิกที่ที่เก็บข้อมูล menu-item-uploads-...
  5. คลิกอัปโหลดไฟล์
  6. อัปโหลด 1.jpg ไปยังที่เก็บข้อมูล
  7. ใน Cloud Console ให้ไปที่ Cloud Run
  8. คลิก process-thumbails
  9. คลิกแท็บบันทึก

fca8e4bafbdf135d.png

  1. ไปที่ที่เก็บข้อมูล menu-item-thumbnails-$PROJECT_ID Cloud Storage
  2. ตรวจสอบว่าระบบสร้างรูปภาพขนาดย่อในที่เก็บข้อมูลภาพปกแล้ว

1b6dee72a1fde681.png

การอัปโหลดรูปภาพที่ไม่เกี่ยวข้องกับอาหาร

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

c76dd525765f66a6.jpeg

  1. บันทึกรูปภาพนี้ลงในเครื่อง
  2. เปลี่ยนชื่อไฟล์ 2.jpg
  3. เปิดคอนโซล Cloud Storage
  4. คลิกที่ที่เก็บข้อมูล menu-item-uploads-...
  5. คลิกอัปโหลดไฟล์
  6. อัปโหลด 2.jpg ไปยังที่เก็บข้อมูลของพื้นที่เก็บข้อมูล
  7. ใน Cloud Console ให้ไปที่ Cloud Run
  8. คลิก process-thumbails
  9. คลิกแท็บบันทึก

18b1e30ee78d3955.png

10 ยินดีด้วย

ยินดีด้วย คุณทำแล็บเสร็จแล้ว

ขั้นตอนต่อไปที่ทำได้

สำรวจ Codelab อื่นๆ ของ Cymbal Eats

ล้างข้อมูล

โปรดลบโปรเจ็กต์ที่มีทรัพยากรดังกล่าวหรือเก็บโปรเจ็กต์ไว้และลบทรัพยากรแต่ละรายการเพื่อเลี่ยงไม่ให้เกิดการเรียกเก็บเงินกับบัญชี Google Cloud สำหรับทรัพยากรที่ใช้ในบทแนะนำนี้

การลบโปรเจ็กต์

วิธีที่ง่ายที่สุดในการหยุดการเรียกเก็บเงินคือการลบโปรเจ็กต์ที่คุณสร้างสำหรับบทแนะนำ