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

สิ่งที่คุณจะได้เรียนรู้
วิธีสร้างไปป์ไลน์การประมวลผลรูปภาพ
- กำหนดค่าที่เก็บข้อมูลของพื้นที่เก็บข้อมูล
- สร้างฟังก์ชัน Cloud Run เพื่ออ่านและเขียนออบเจ็กต์ใน Cloud Storage
- ทริกเกอร์ Eventarc
- ผสานรวม Vision API เพื่อตรวจจับรูปภาพอาหาร
- ทดสอบและตรวจสอบโซลูชันแบบครบวงจร
ข้อกำหนดเบื้องต้น
- แล็บนี้ถือว่าคุณคุ้นเคยกับ Cloud Console และสภาพแวดล้อมเชลล์
- ประสบการณ์การใช้งาน Cloud Storage, ฟังก์ชัน Cloud Run หรือ Vision API มาก่อนจะเป็นประโยชน์ แต่ไม่จำเป็น
2. การตั้งค่าและข้อกำหนด
การตั้งค่าโปรเจ็กต์ Cloud
- ลงชื่อเข้าใช้ คอนโซล Google Cloud แล้วสร้างโปรเจ็กต์ใหม่หรือใช้โปรเจ็กต์ที่มีอยู่ซ้ำ หากยังไม่มีบัญชี Gmail หรือ Google Workspace คุณต้องสร้างบัญชี



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

การตั้งค่าสภาพแวดล้อม
- สร้างตัวแปรสภาพแวดล้อมที่เกี่ยวข้องกับโปรเจ็กต์และทรัพยากรโดยเรียกใช้คำสั่งด้านล่างในเทอร์มินัล 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)")
- เปิดใช้ 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
- โคลนที่เก็บ
git clone https://github.com/GoogleCloudPlatform/cymbal-eats.git && cd cymbal-eats/cloud-functions
3. กำหนดค่าที่เก็บข้อมูล Cloud Storage
สร้างที่เก็บข้อมูล
สร้างที่เก็บข้อมูล Cloud Storage สำหรับการอัปโหลดและภาพปกสำหรับไปป์ไลน์การประมวลผลรูปภาพ
ใช้คำสั่ง gsutil mb และชื่อที่ไม่ซ้ำกันเพื่อสร้าง 2 Bucket ดังนี้
- อัปโหลด Bucket ที่จะอัปโหลดรูปภาพก่อน
- ที่เก็บข้อมูลภาพขนาดย่อเพื่อจัดเก็บรูปภาพปกที่สร้างขึ้น
สร้างที่เก็บข้อมูลเพื่ออัปโหลดรูปภาพใหม่โดยทำดังนี้
gsutil mb -p $PROJECT_ID -l $REGION $UPLOAD_BUCKET
ตัวอย่างเอาต์พุต
Creating gs://menu-item-uploads-cymbal-eats-8399-3119/...
สร้าง Bucket เพื่อจัดเก็บภาพปกที่สร้างขึ้น
gsutil mb -p $PROJECT_ID -l $REGION $BUCKET_THUMBNAILS
ตัวอย่างเอาต์พุต
Creating gs://menu-item-thumbnails-cymbal-eats-8399-3119/...
อัปเดตสิทธิ์ของ Bucket
อัปเดตสิทธิ์ของที่เก็บข้อมูลเพื่ออนุญาตสิทธิ์อ่านแก่ผู้ใช้
ใช้คำสั่ง 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 เพื่ออนุญาตการดำเนินการอ่านจาก Artifact Registry โดยทำดังนี้
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member "serviceAccount:${CF_SERVICE_ACCOUNT}@${PROJECT_ID}.iam.gserviceaccount.com" \
--role "roles/artifactregistry.reader"
ให้สิทธิ์บทบาท storage.objectCreator เพื่ออนุญาตให้จัดเก็บรูปภาพที่สร้างขึ้นใน Bucket ของภาพขนาดย่อ
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 ซึ่งจะทำให้บัญชีบริการเผยแพร่เหตุการณ์ได้เมื่อมีการอัปโหลดรูปภาพลงใน Bucket
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 เพื่อกำหนดป้ายกำกับคำอธิบายให้กับรูปภาพ ฟังก์ชันจะตรวจสอบป้ายกำกับคำอธิบาย หากป้ายกำกับระบุว่ารูปภาพเป็น "อาหาร" ระบบจะส่งเหตุการณ์ไปยังบริการเมนูเพื่ออัปเดตรูปภาพและภาพขนาดย่อของรายการในเมนู

การทริกเกอร์ฟังก์ชัน
ฟังก์ชัน Cloud Storage อิงตามการแจ้งเตือน Pub/Sub จาก Cloud Storage และรองรับประเภทเหตุการณ์ที่คล้ายกัน ดังนี้
ใน Lab นี้ คุณจะได้ทำให้ฟังก์ชันใช้งานได้และทริกเกอร์ฟังก์ชันเมื่อมีการส่งออบเจ็กต์ใน Cloud Storage เสร็จสมบูรณ์
มีการทำให้วัตถุสิ้นสุด
เหตุการณ์การสิ้นสุดออบเจ็กต์จะทริกเกอร์เมื่อการ "เขียน" ออบเจ็กต์ Cloud Storage เสร็จสมบูรณ์ โดยเฉพาะอย่างยิ่ง การสร้างออบเจ็กต์ใหม่หรือการเขียนทับออบเจ็กต์ที่มีอยู่จะทริกเกอร์เหตุการณ์นี้ ทริกเกอร์นี้จะไม่สนใจการดำเนินการอัปเดตที่เก็บถาวรและข้อมูลเมตา
6. ผสานรวม Cloud Storage
Cloud Storage เป็นบริการสำหรับจัดเก็บออบเจ็กต์ใน Google Cloud ออบเจ็กต์คือข้อมูลที่ไม่เปลี่ยนแปลงซึ่งประกอบด้วยไฟล์ในรูปแบบใดก็ได้ คุณจัดเก็บออบเจ็กต์ในคอนเทนเนอร์ที่เรียกว่าที่เก็บข้อมูล ที่เก็บข้อมูลทั้งหมดเชื่อมโยงกับโปรเจ็กต์ และคุณจัดกลุ่มโปรเจ็กต์ภายใต้องค์กรได้ ไลบรารีของไคลเอ็นต์และ API ช่วยให้การผสานรวมกับ Cloud Storage
ใน Lab นี้ คุณจะได้ใช้ไลบรารีของไคลเอ็นต์เพื่ออ่านและเขียนออบเจ็กต์ไปยัง Cloud Storage
การติดตั้งไลบรารีของไคลเอ็นต์
ไลบรารีของไคลเอ็นต์ Cloud พร้อมให้บริการในภาษาโปรแกรมยอดนิยมหลายภาษา หากต้องการเริ่มใช้ไลบรารี คุณต้องติดตั้งไลบรารีของไคลเอ็นต์
การใช้ไลบรารีของไคลเอ็นต์
รายละเอียดการติดตั้งใช้งานส่วนใหญ่ขึ้นอยู่กับภาษาโปรแกรม หากต้องการใช้ไลบรารีของไคลเอ็นต์ในแอปพลิเคชัน ขั้นตอนแรกคือการนำเข้าทรัพยากร 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 เมื่อมีการอัปโหลดรูปภาพใหม่ลงใน Bucket
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 ระบบจะอัปโหลดไฟล์เป็นส่วนๆ และประกอบเป็นออบเจ็กต์เดียว สำหรับออบเจ็กต์ขนาดเล็ก ให้ใช้การอัปโหลดแบบคำขอเดียว
โค้ดด้านล่างจะอัปโหลดรูปภาพไปยัง Cloud Storage โดยใช้การอัปโหลดแบบคำขอเดียว
index.js
const thumbnailImage = await thumbBucket.upload(thumbFile);
7. ผสานรวม Vision API
Cloud Vision ช่วยให้นักพัฒนาแอปสามารถผสานรวมฟีเจอร์การตรวจจับการมองเห็นไว้ภายในแอปพลิเคชันได้ง่ายๆ ซึ่งรวมถึงการติดป้ายกำกับรูปภาพ การตรวจจับใบหน้าและจุดสังเกต การรู้จำอักขระด้วยภาพ (OCR) และการติดแท็กเนื้อหาที่อาจไม่เหมาะสม
การติดตั้งไลบรารีของไคลเอ็นต์
ไลบรารีของไคลเอ็นต์ Cloud พร้อมให้บริการในภาษาโปรแกรมยอดนิยมหลายภาษา หากต้องการเริ่มใช้ไลบรารี คุณต้องติดตั้งไลบรารีของไคลเอ็นต์
สร้างไคลเอ็นต์เครื่องมือประกอบรูปภาพ
หากต้องการเข้าถึง Google APIs โดยใช้ SDK ของไคลเอ็นต์อย่างเป็นทางการ คุณจะต้องสร้างออบเจ็กต์บริการตามเอกสารการค้นพบของ 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 สำหรับอัปโหลดรูปภาพและคำขอดาวน์สตรีมเพื่อจัดเก็บข้อมูลเมตาที่ได้ โดยจะไม่มีการติดตั้งความสามารถดังกล่าวเป็นส่วนหนึ่งของ Lab นี้
ระบบจะสร้างคอมโพเนนต์ต่อไปนี้ในระหว่างการติดตั้งใช้งานฟังก์ชัน
- ฟังก์ชัน Cloud Run
- ทริกเกอร์ Eventarc
- หัวข้อและการสมัครใช้บริการ Pub/Sub
ในเทอร์มินัล Cloud Shell ให้เรียกใช้คำสั่งด้านล่างเพื่อทำให้ฟังก์ชัน Cloud Run ใช้งานได้ด้วย Bucket ทริกเกอร์ใน 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 Console ให้ตรวจสอบบริการ Cloud Run ที่สร้างขึ้นสำหรับฟังก์ชัน

ใน Cloud Console ให้ตรวจสอบทริกเกอร์ Eventarc ที่สร้างขึ้นสำหรับฟังก์ชัน

ใน Cloud Console ให้ตรวจสอบ Topic และ Subscription ของ Pub/Sub ที่สร้างขึ้นสำหรับทริกเกอร์ Eventarc


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

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

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

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

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

10. ยินดีด้วย
ยินดีด้วย คุณทำแล็บเสร็จแล้ว
ขั้นตอนต่อไปที่ทำได้
ดู Codelab อื่นๆ ของ Cymbal Eats
- การทริกเกอร์ Cloud Workflows ด้วย Eventarc
- การเชื่อมต่อกับ Private CloudSQL จาก Cloud Run
- การเชื่อมต่อกับฐานข้อมูลที่มีการจัดการครบวงจรจาก Cloud Run
- รักษาความปลอดภัยให้กับแอปพลิเคชันแบบ Serverless ด้วย Identity Aware Proxy (IAP)
- การทริกเกอร์ Cloud Run Jobs ด้วย Cloud Scheduler
- การติดตั้งใช้งานกับ Cloud Run อย่างปลอดภัย
- การรักษาความปลอดภัยให้กับการเข้าชมขาเข้าของ Cloud Run
- การเชื่อมต่อกับ AlloyDB ส่วนตัวจาก GKE Autopilot
ล้างข้อมูล
โปรดลบโปรเจ็กต์ที่มีทรัพยากรออก หรือเก็บโปรเจ็กต์ไว้และลบทรัพยากรแต่ละรายการออก เพื่อไม่ให้เกิดการเรียกเก็บเงินกับบัญชี Google Cloud สำหรับทรัพยากรที่ใช้ในบทแนะนำนี้
การลบโปรเจ็กต์
วิธีที่ง่ายที่สุดในการยกเลิกการเรียกเก็บเงินคือการลบโปรเจ็กต์ที่คุณสร้างขึ้นสำหรับบทแนะนำ